写点什么

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

  • 2016-04-26
  • 本文字数:1177 字

    阅读完需:约 4 分钟

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 )关注我们。

2016-04-26 19:002112
用户头像

发布了 218 篇内容, 共 78.5 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试/测试开发丨Python 模块与包 学习笔记

测试人

Python 程序员 软件测试 测试开发

面部表情识别:心理学与计算机科学的交汇点

数据堂

生成式AI在电信行业的有所为与有所不为

百度开发者中心

人工智能 文心一言

生成式AI:未来内容产业的变革力量

百度开发者中心

人工智能 百度文心一言

更方便的集成使用!IoTDB plugin 上线 Grafana 官网!

Apache IoTDB

IT工程化,提升数科公司运营能力

用友BIP

数科公司

【墨菲安全实验室】Smartbi未授权设置Token回调地址获取管理员权限

墨菲安全

网络安全 安全 BI

学习Java 8 Stream,提升编码能力!

互联网工科生

Java stream Java11 Stream API

软件测试/测试开发丨Python 常用第三方库 yaml

测试人

Python 程序员 软件测试 测试开发

面部表情识别研究:解读情绪的密码

数据堂

NLP文本匹配任务Text Matching 有监督训练:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

汀丶人工智能

人工智能 自然语言处理 文本匹配

如何选择最佳的文件传输协议?(FTP、TFTP、Raysync)

镭速

文件传输协议

RHG之人工智能漏洞挖掘

云起无垠

2023-08-14:用go语言写算法。给出两个长度相同的字符串 str1 和 str2 请你帮忙判断字符串 str1 能不能在 零次 或 多次 转化 后变成字符串 str2 每一次转化时,你可以将

福大大架构师每日一题

福大大架构师每日一题

使用 Amazon MemoryDB for Redis 作为 JuiceFS 的元数据引擎

亚马逊云科技 (Amazon Web Services)

Amazon

ByConity 首次 TPC-DS 测试结果发布 & 新活动邀请!

字节跳动开源

大数据 开源 字节跳动 数仓 社区

生成式AI发展前景展望:创新、应用与市场规模

百度开发者中心

人工智能 百度文心一言

鱼龙混杂的网络营销行业:入行新人如何规划职业

石头IT视角

使用FTP文件传输协议的潜在风险

镭速

文件传输协议

OpenHarmony Meetup 广州站 OpenHarmony正当时—技术开源

OpenHarmony开发者

OpenHarmony

【墨菲安全实验室】 Apache Airflow Drill Provider < 2.4.3 存在任意文件读取漏洞(CVE-2023-39553)

墨菲安全

Apache 网络安全 安全 漏洞 apache 社区

面部表情识别技术的伦理问题与应对策略

数据堂

SpringBoot有几种获取Request对象的方法?

王磊

java面试

SaaS出海:黄粱易得,黄金难收

ToB行业头条

React和Vue的区别,大家怎么看?

FinFish

Vue React 小程序容器 混合app

生成式AI助力人工智能下半场

百度开发者中心

人工智能 百度文心一言

NLP文本匹配任务Text Matching 有监督训练:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

汀丶人工智能

人工智能 自然语言处理 文本匹配算法

软件测试/测试开发丨Python 虚拟环境及pip环境管理

测试人

Python 程序员 软件测试 测试开发

生成式AI:人工智能新生产力

百度开发者中心

人工智能 百度文心一言

Rust 1.8引入新的基于Cargo的搭建系统和更多新特性_语言 & 开发_Sergio De Simone_InfoQ精选文章