铁锈1.46.0

2020-08-28 00:15:40

Rust团队很高兴宣布Rust的新版本,1.46.0。Rust是一种编程语言,它使每个人都能够构建可靠而高效的软件。

如果您通过Rustup安装了以前版本的Rust1.46.0,则获取Rust1.46.0非常简单:

如果您还没有,您可以从我们网站的相应页面获取概要信息,并在GitHub上查看1.46.0的详细发行说明。

这个版本使得const fn中出现了相当多的新东西,两个新的标准库API,以及一个对库作者有用的功能。请参阅详细的发行说明,以了解本文未涉及的其他更改。

Const FN foo(){let x=[1,2,3,4,5];//将数组转换为切片let y:&;[_]=&;x;}。

虽然这些功能可能感觉并不新鲜,但考虑到您可以在const fn之外使用它们,它们增加了大量的编译时计算能力!例如,const-sha1机箱可以让您在编译时计算SHA-1散列。这使得微软针对Rust的WinRT绑定的性能提高了40倍。

早在3月份,Rust 1.42的发布在展开时引入了更好的错误消息,相关函数会死机。当时我们提到这个实施的方式还不稳定。铁锈1.46稳定了这一功能。

此属性名为#[Track_Caller],最早是在2017年7月的RFC2091年中提出的!如果您正在编写一个可能会死机的类似展开的函数,您可以将此注释放在您的函数上,并且默认的死机格式化程序将使用其调用者作为其错误消息中的位置。例如,下面是先前的展开:

Pub FN UnWrap(Self)->;T{Match Self{Some(Val)=>;val,None=>;Panic!(";在`None`值";上调用`Option::UnWrap()`),}}。

#[Track_Caller]pub FN Unrapp(Self)->;T{Match Self{Some(Val)=>;Val,None=>;Panic!(";在`None`值";上调用`Option::Unwire()`),}}。

如果您自己实现了死机挂钩,则可以使用调用者方法std::Panic::Location来访问此信息。

与Const FN改进的主题保持一致,Std::Mem::Forget is Noowa Const FN。此外,本版本还稳定了两个新的API:

在Rust 1.46.0版本中还有其他更改:查看Rust、Cargo和Clippy中的更改。

许多人聚集在一起创建了铁锈1.46.0。没有你们,我们做不成这件事。谢谢!