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 _;
有关更多详细信息,请参见发行说明 。
稳定标准库
以下是已变为常数的所有内容的列表:
此外,还稳定了以下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。 没有你们每个人,我们不可能完成工作。 谢谢你