写点什么

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

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

关注

评论

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

四种 AI 技术方案,教你拥有自己的 Avatar 形象

阿里云CloudImagine

人工智能 阿里云 计算机视觉 视频云 元宇宙

托管页前端异常监控与治理实战

百度Geek说

大前端

超全整理:程序员都在用什么工具?

华为云开发者联盟

程序员 技术 设计 编程语言 开发工具

Node.js 17 新特征简介

devpoint

node.js Promise 11月日更

网课录屏用什么软件好?Camtasia极简操作,课程重点一目了然

淋雨

Camtaisa

2022第十五届北京国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

华为云·核心伙伴开发者训练营——产业云专场在东莞松山湖圆满落幕

华为云开发者联盟

华为云 鲁班会

GitHub点击量破百万访问,不愧是被称阿里神作的JDK源码笔记

Sakura

Java 源码 架构 jdk 面试

能让你从P6+学到P9也只有马士兵老师了,全套学习资源分享

Java架构追梦

Java 编程 架构 面试 马士兵

Vue进阶(幺陆肆):自定义指令之拖拽指令

No Silver Bullet

Vue 11月日更

恒源云(GPUSHARE)_CAN: 借助数据分布提升分类性能

恒源云

深度学习

百度Apollo参编首批汽车信息安全国家标准,跻身车联网信息安全第一梯队

百度开发者中心

Apollo

【等保小知识】等保与分保的三大区别汇总分析

行云管家

网络安全 数据安全 等保 分保

iOS开发-百度一面总结

iOSer

ios 面试 iOS面试 ios开发 百度面试

顶会VLDB‘22论文解读:CAE-ENSEMBLE算法

华为云开发者联盟

算法 时间序列 华为云数据库 深度神经网络

数据库审计是什么意思?作用是什么?

行云管家

数据库 安全 IT运维 数据库审计

架构实战营模块七作业

Geek_d18264

架构实战营

RabbitMQ详解——RabbitMQ架构部署(四)

AiDaddy

RabbitMQ Mirror Queue Federation

你需要知道的 19 个 console 实用调试技巧

CRMEB

CSS JavaScript DOM console crmeb

看企业如何玩转低代码,引发效率革命

行云创新

云原生 低代码 开发 直播 双十一

RabbitMQ详解——服务端存储机制(二)

AiDaddy

RabbitMQ mnesia ETS

华为云天筹AI求解器:智能世界是道迷人的数学题

脑极体

linux 设置VPN

webrtc developer

Linux vpn

腾讯安全姬生利:云原生环境下的“密码即服务”

腾讯安全云鼎实验室

云原生 加密

《个保法》施行 | App 隐私合规检测双十一尝鲜仅需99元

蚂蚁集团移动开发平台 mPaaS

隐私保护 移动开发 监管合规

《黑客之道》kali Linux之NMAP高级使用技巧和漏洞扫描发现

学神来啦

Linux 渗透 kali nmap

“智慧粮仓”守卫中国饭碗

ThingJS数字孪生引擎

大前端 物联网 可视化

`MD`语法技巧Typora

sec01张云龙

11月日更 MD MD写法

学长带路学吉他,这几招足够了

懒得勤快

初入云计算行业,可以考取哪些云计算证书?

行云管家

云计算 腾讯云 阿里云 证书 IT运维

百度鸿鹄芯片落地首款量产车吉利博越X 智能车机体验惊艳成都车展

百度开发者中心

百度 车联网 鸿鹄芯片

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