2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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:001888
用户头像

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

关注

评论

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

5.26直播预告|《观见话题》第一期:跨境组网与加速上云的硬核解法

观测云

dfs专项练习题

工程师日月

DFS 5月月更

宜搭5月更新:跨应用数据读写能力升级,AI组件内测开放

一只大光圈

AIRIOT物联网低代码平台如何配置OPC UA驱动?

AIRIOT

【活动报名】TiDB 社区天津站 Meetup 要来啦!

TiDB 社区干货传送门

OceanBase 源码解读(十一):Location Cache 模块浅析

OceanBase 数据库

oceanbase 源码解读

springboot集成activiti整套方案()

金陵老街

Vue ERP Activiti spring-boot

【高并发】什么是ForkJoin?看这一篇就够了!

冰河

并发编程 多线程 高并发 协程 异步编程

kafka集群搭建

阿呆

Kafk

【刷题第14天】两个链表的第一个公共节点

白日梦

5月月更

All in ONE!博睿数据重磅推出一体化智能可观测平台

博睿数据

博睿数据 IT运维 ONE平台

阿里云联合鼎捷软件发布云上数字工厂解决方案,实现云MES系统本地化部署

阿里云弹性计算

数字化转型 MES系统 中小企业 云盒

美团二面:为什么Redis会有哨兵?

Java全栈架构师

Java 数据库 redis 程序员 面试

Istio + SkyWalking + Spring Boot 实战 -Zadig 自测模式搞定开发者子环境

Zadig

DevOps 云原生 自动化测试 CI/CD

关于 WordPress 你了解多少?

海拥(haiyong.site)

WordPress 5月月更

先是IPV6,再是WI-FI7你都清楚这是什么吗?

郑州埃文科技

ipv6 IP地址

论道原生:走进可观测性

Daocloud 道客

云原生 可观测性 OpenTelemetry

普渡科技宣布成立“PUDU-X”创新基金,为青年工程师筑梦未来

极客天地

观测云产品更新|优化观测云商业版注册流程;新增场景仪表板用户视图模版库;新增场景自定义查看器日志来源及筛选联动等

观测云

可观测性 可观测

森园区Web版大更新,多端同步互通,效果模版更新

ThingJS数字孪生引擎

计算机网络概述

工程师日月

计算机网络 5月月更

4月券商App行情刷新及交易体验评测报告,7家券商入围领导者象限

博睿数据

性能测试 系统运维 博睿数据 券商排行

java培训Redis缓存设计

@零度

redis JAVA开发

七、云原生日志审计

穿过生命散发芬芳

日志 5月月更

源码解读预告 |TiFlash DeltaTree 引擎设计及实现解析!

TiDB 社区干货传送门

墨菲安全受邀与腾讯安全共话软件供应链安全治理

墨菲安全

程序员 腾讯安全 墨菲安全 软件供应链

ECSM隐私协议

潇潇雨歇

520特别企划 | Z世代进入婚恋市场,婚恋交友行业会有什么变化?​

易观分析

Z世代

天翼云推荐新人返好礼,最高返利千元

天翼云开发者社区

netty系列之:kequeue传输协议详解

程序那些事

Java Netty 程序那些事 5月月更

英特尔庄秉翰:推动5G释放数字经济潜能,拥抱“银发时代”美好生活

科技之家

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