BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Rust 1.8引入新的基于Cargo的搭建系统和更多新特性

| 作者 Sergio De Simone 关注 17 他的粉丝 ,译者 刘嘉洋 关注 0 他的粉丝 发布于 2016年4月27日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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所说,引入新的搭建系统有以下几个原因:

  • Makefiles通常来说都是不可修改的,因此如果必须修改它时很困难;
  • make虽然便携性很强,但它也不是在“任何情况下”都可以移植,由于在Windows系统下缺乏默认make,经常会出现不可移植情况;
  • 将Rust编译器和标准库迁移到Cargo上给Rust程序员的开发过程带来了很多统一性,也使得一些常用工具,例如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)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT