Rust 1.8 中加入了许多新语言特性,并对现有标准库进行了许多改进。此外,它为rustc引入了新的基于Cargo的搭建系统,在启动Rust的第一步时可以看到。
第一个新特性考虑到了“等号运算符”库中的运算符,例如+=和-=, 它们现在可以使用特性重载 。这使得在Count类中明确+=运算符成为可能,范例代码如下所示:
use std::ops::AddAssign; #[derive(Debug)] struct Count { value: i32, } impl AddAssign for Count { fn add_assign(&mut self, other: Count) { self.value += other.value; } }
第二个Rust 语法变更是较小的,之前在 定义没有字段的结构 时需要大括号,在现在的1.8版本中大括号可以省略,例如:
struct Foo; // this is correct, whereas previously struct Foo {} was required
这个变更让编写宏命令变得更容易,我们不再需要将其作为一个特殊情况进行考虑,也不需要在空结构和非空结构之间转换。
更进一步来说,Rust 1.8 引入了新的基于Cargo的搭建系统 ,它将最终取代Make。根据Rust开发者,上述PR的提交者,实现了这个变更的Alex Crichton所说,引入新的搭建系统有以下几个原因:
make
虽然便携性很强,但它也不是在“任何情况下”都可以移植,由于在Windows系统下缺乏默认 make
,经常会出现不可移植情况; crates.io
package manager 可以使用; 上述的几点都需要很高的成本,因为Rust使用基于 make
的搭建系统已经许多年了。因此Crichton写到,取代 make
的过程“路漫漫其修远兮”。
正如上面所提到过的, 在bootstrapping Rust 的第一步中可以看到100%-Rust搭建系统,这将在 Rust 1.10中实现。
最好,Rust 1.8在其标准库中添加了stabilization库,有这些主要变化:UTF–16-related方法,不同的基于时间的APIs以及上面提到的运算符重载需要用到的特性。
目前 还在测试阶段 的另一个Rust 1.8的新特性是 rustup ,它可以让开发者安装不同平台下的 stdlib
版本,这让跨平台编译变得更简单。下面的例子展示了如何自动处理所有依赖需求:
$ rustup target add x86_64-unknown-linux-musl info: downloading component 'rust-std' for 'x86_64-unknown-linux-musl' 13.77 MiB / 13.77 MiB (100.00%) 1.47 MiB/s ETA: 0s info: installing component 'rust-std' for 'x86_64-unknown-linux-musl'
Rust 1.8现在可以在 这里 下载,如果你想了解更多发行说明请点击 这里 。
查看英文原文: Rust 1.8 Introduces New Cargo-based Build System and More
感谢张龙对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。