当前位置: 首页 > news >正文

2510rs,rust,1.85

原文

1.85.0稳定版

语言

1,RPIT改变了生命期抓规则,没有use<..>时更改了impl Trait类型的默认抓参数.
2,if let临时域,对iflet更改临时域.
3,尾部式临时域,更改块中尾部式临时域.

4,匹配人体工程学保留,禁止某些模式组合以避免混淆并允许未来改进.

5,不安全的块,块现在需要不安全关键字.
6,不安全属性,现在必须按不安全标记export_name,link_sectionno_mangle属性.

7,unsafe_op_in_unsafe_fn警告,unsafe_op_in_unsafe_fnlint现在默认发出警告,要求在不安全函数中显式的unsafe{}块.

8,禁止引用静态 mut,引用静态mut项的现在会生成默认拒绝错误.

9,永不类型回退更改,更改了永不类型!强制,并按"拒绝"更改never_type_fallback_flowing_into_unsafe检查级.

10,宏片段限定符,macro_rules!宏现在也匹配_式.

11,缺少宏片段限定符,missing_fragment_specifierlint现在是一个拒绝不带片段限定符类型宏元变量硬错误.

12,gen关键字,保留gen关键字,以备未来添加生成器块.
13,保留语法,保留#"foo"#风格串和##令牌,以期未来更改保护串字面的解析方式.

标准库

1,更改预加载,在预加载中添加未来IntoFuture.
2,为Box<[T]>添加IntoIterator,更改迭代器处理装箱切片的方式.
3,新不安全的函数,std::env::set_var,std::env::remove_varstd::os::unix::process::CommandExt::before_exec现在是不安全的函数.

货物

1,Cargo:Rust版本相关解析器,更改默认依赖解析器行为以考虑rust版本字段.
2,Cargo:表和键名一致性,删除一些过时的Cargo.toml键.

3,Cargo:拒绝未使用的继承的默认功能,更改与继承的客户区依赖的defaultfeatures=false工作方式.

Rustdoc

1,Rustdoc组合测试,现在在一个可执行文件中组合了Doctest,显著提高了性能.
2,Rustdoc嵌套了包含!更改,更改嵌套包含!文件的相对路径行为.

Rustfmt

1,Rustfmt:风格版,引入了允许你独立控制Rust版的格式化版本"风格版"的概念.
2,Rustfmt:格式化修复,大量修复各种情况的格式化.

3,Rustfmt:排序原始标识,更改了r#foo标识的排序方式.
4,Rustfmt:版本排序,更改包含整数的标识排序方式.

异步闭包

Rust现在支持异步闭包,如async||{}在调用时返回未来.这与一个也可从本地环境中抓值的异步 fn一样,与普通闭包函数之间的区别一样.

还在标准库预加载中带了3个类似的特征:AsyncFn,AsyncFnMutAsyncFnOnce.

有时,已可用比如||async{}普通闭包和异步块来近似它,然而,无法从闭包抓中借用此内部块返回的未来,但这确实适合异步闭包:

let mut vec: Vec<String> = vec![];
let closure = async || {vec.push(ready(String::from("")).await);
};

也无法用返回未来Fn特征,正确表达高阶函数签名,但你可用AsyncFn特征来编写它:

use core::future::Future;
async fn f<Fut>(_: impl for<'a> Fn(&'a u8) -> Fut)
whereFut: Future<Output = ()>,
{ todo!() }
async fn f2(_: impl for<'a> AsyncFn(&'a u8))
{ todo!() }
async fn main() {async fn g(_: &u8) { todo!() }f(g).await;//~^错误不匹配类型//~|错误:一个类型比另一个类型更通用f2(g).await;//好
}

因此,异步闭包为这两个问题提供了一流的方法!更多细节,见RFC3668和稳定报告.
这里
这里

从诊断中隐藏特征实现

新的#[diagnostic::do_not_recommend]属性是编译器提示,以不要按诊断消息的一部分显示带注解的特征实现.

库作者来说,这是个避免编译器给出可能无益或误导性的建议的方法.如:

pub trait Foo {}
pub trait Bar {}
impl<T: Foo> Bar for T {}
struct MyType;
fn main() {let _object: &dyn Bar = &MyType;
}

对某些API,实现间接通过该空实现可能很有意义.对别人来说,可能期望大多数用户应该直接实现,因此的建议有问题.

此时,添加诊断提示将如下更改错误消息:

#[diagnostic::do_not_recommend]
impl<T: Foo> Bar for T {}

有关原始动机,见RFC2397,更多细节,见当前参考.
这里
这里

元组的FromIteratorExtend

早期版本Rust为(T,U)元组对的迭代器实现了方便特征,使其行为类似Iterator::unzip.
Extend1.56中,FromIterator1.79中.

这些现在已扩展到更多的元组长度,从单例(T,)12个项目长度(T1,T2,..,T11,T12).如,你现在可用collect()一次扇出到多个集合中:

use std::collections::{LinkedList, VecDeque};
fn main() {let (squares, cubes, tesseracts): (Vec<_>, VecDeque<_>, LinkedList<_>) =(0i32..10).map(|i| (i * i, i.pow(3), i.pow(4))).collect();println!("{squares:?}");println!("{cubes:?}");println!("{tesseracts:?}");
}
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
[0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561]

更新到std::env::home_dir()

std::env::home_dir(),已弃用多年,因为如果设置了HOME环境变量(这不是窗口上的正常配置),它可能会在某些窗口配置中产生奇怪的结果.
之前避免更改其行为,因为担心与基于该非标准配置的代码的兼容.因此函数,已弃用的时间,现在按错误修复更新它的行为,后续版本将删除该函数弃用.

稳定的API

BuildHasherDefault::new
ptr::fn_addr_eq
io::ErrorKind::QuotaExceeded
io::ErrorKind::CrossesDevices
{float}::midpoint
正的 {integer}::midpoint
NonZeroU*::midpoint
impl std::iter::Extend
//对1~12个参数的元组实现
FromIterator<(A, ...)>
//对1~12个参数的元组实现std::task::Waker::noop

这些API现在在环境中是稳定的:

mem::size_of_val
mem::align_of_val
Layout::for_value
Layout::align_to
Layout::pad_to_align
Layout::extend
Layout::array
std::mem::swap
std::ptr::swap
NonNull::new
HashMap::with_hasher
HashSet::with_hasher
BuildHasherDefault::new
<float>::recip
<float>::to_degrees
<float>::to_radians
<float>::max
<float>::min
<float>::clamp
<float>::abs
<float>::signum
<float>::copysign
MaybeUninit::write
http://www.dtcms.com/a/515641.html

相关文章:

  • 深度学习(13)-PyTorch 数据转换
  • rocketmq实现取消超时订单?兜底方案?
  • Linux如何安装使用Rust指南
  • 田块处方图可视化(PyQt5)
  • Rust算法复杂度-大O分析
  • 2510rs,rust清单4
  • 大型网站开发考试移动商城的推广方法
  • FastAPI之 自动化的文档
  • 日常开发20251022,传统HTML表格实现图片+视频+预览
  • 标题:鸿蒙Next音频开发新篇章:深入解析Audio Kit(音频服务)
  • 湖滨区建设局网站app开发公司排行榜做软件的公司
  • UDP实现客服与客户的咨询对话
  • 学习HAL库STM32F103C8T6(实时时钟项目、WIFI天气预报项目)
  • npm、yarn、pnpm的对比和优略
  • 离散卷积,小demo(小波信号分析)
  • Java 大视界 -- Java 大数据在智能教育学习社区互动模式创新与用户活跃度提升中的应用(426)
  • 建设比较好网站服务器用来做网站和数据库
  • C# iText7与iTextSharp导出PDF对比
  • HARDWARE 属性的Bitmap与普通Bitmap,GPU与RenderThread渲染与处理方式异同比较,Android
  • 东营市做网站的公司h5学习教程
  • 不同类型的金融产品(如股票、期货、加密货币)双时间尺度优化的差异化调整
  • xtuoj Repeat One
  • ENSP Pro Lab笔记:配置STP/RSTP/MSTP(3)
  • **发散创新:模拟计算的高级应用与实现**随着科技的飞速发展,模拟计算已经成为了众多领域的核心工
  • EasyGBS如何在平安乡村搭建无线视频联网监控系统?
  • 上新!联软科技发布新一代LeagView平台,用微服务重塑终端安全
  • 【以太来袭】2. 节点设计与部署
  • 增加网站广告位建网站首页图片哪里找
  • Yolo分割数据集错误数据删除
  • Redis原理篇(一)数据结构