Rust 1.33发布

Rust开发团队很高兴地宣布发布Rust的新版本1.33.0。 Rust是一种编程语言,使每个人都可以创建可靠且高效的软件。


如果您使用rustup安装了先前版本的Rust,那么要将Rust升级到1.33.0版本,您只需执行以下操作:


 $ rustup update stable 

如果尚未安装rustup ,则可以从我们网站的相应页面进行安装 。 GitHub上提供了Rust 1.33.0的详细发行说明


稳定版1.33.0中包含什么


此版本的主要改进: const fn功能的显着扩展和新Pin API的稳定性。


扩展const fn的功能


const fn 现在可以做更多的事情 ,即:


  • 无条件(不可辩驳)的模式匹配(例如, const fn foo((x, y): (u8, u8)) { ... }
  • let绑定(例如let x = 1;
  • 可变的let绑定(例如let mut x = 1;
  • 赋值表达式(例如x = y )和赋值运算符(例如x += y ),包括对投影的赋值(例如结构字段或索引运算符的结果x[3] = 42
  • 表达式语句(例如3;

现在,您可以从“ const fn”调用“ const unsafe fn” ,例如:


 const unsafe fn foo() -> i32 { 5 } const fn bar() -> i32 { unsafe { foo() } } 

归功于这些改进,可以声明一个常量的标准库函数。 它们在库部分的下面列出。


引脚API


本期介绍了一种新的语言机制,介绍了 输入std :: pin :: Pin和标记类型Unpin 。 该模块的文档“ std :: pin”中详细描述主要思想:

有时禁止物体运动可能是有用的,即 保证其地址在内存中的不变性。 使用此功能的主要场景是自引用结构,因为移动此类对象将导致无效的指针,这可能导致未定义的行为(UB)。

Pin<P>确保由类型P的任何指针引用的对象在内存中具有固定位置,即 他无法动弹,记忆也无法释放。 这些值称为“固定”。

预计该机制将主要由库的作者使用,因此我们现在将不进一步详细介绍(可以在上面的链接的文档中找到)。 但是,此API的稳定对于所有Rust用户而言都是重要的事件,因为这是朝着备受期待的async / await迈出的关键一步。 可以在areweasyncyet.rs上监视此方向上剩余工作的状态。


汇入为「_」


现在,您可以将实体导入为“ _” 。 这允许您导入类型的实现,而无需在当前名称空间中输入其名称,例如:


 use std::io::Read as _; //     : pub trait Read {} 

有关更多详细信息,请参见发行说明


稳定标准库


以下是已变为常数的所有内容的列表:



此外,还稳定了以下API:



有关更多详细信息,请参见发行说明


货运增强


如果在初始构建过程中修改了其中一个文件,则Cargo现在可以重新组装条板箱。


有关更多详细信息,请参见发行说明


Crates.io


如先前宣布的那样 ,从此版本开始,crates.io将需要确认电子邮件地址来发布板条箱。 从2019-03-01 00:00 UTC开始,如果没有经过验证的邮件的帐户,则cargo publish的实施将失败。


这是满足DMCA要求所必需的。 如果您没有注意到货物在最新版本中写的关于此的警告,请访问crates.io/me指示并确认您的邮件。 该邮寄地址将永远不会被发布,并将仅用于crates.io的直接功能。


开发人员1.33.0


很多人一起创建了Rust 1.33。 没有你们每个人,我们不可能完成工作。 谢谢你

Source: https://habr.com/ru/post/zh-CN442244/


All Articles