写点什么

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

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

关注

评论

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

AnyGo for Mac(在iPhone / iPad上轻松模拟GPS位置)v6.9.0激活版

Rose

AnyGo中文版 AnyGo for Mac Mac虚拟机定位 GPS位置 AnyGo破解版

苹果Macos好玩的经典游戏推荐!

Rose

mac游戏 苹果mac游戏 Mac游戏推荐

企业服务大模型扎根生产一线,用友BIP为中国智造“再续新篇”!

用友BIP

企业大模型

高效会议指南:九种让你的会议更有价值的方法

爱吃小舅的鱼

团队 会议

关于组态图和组态图设计

2D3D前端可视化开发

组态软件 组态 组态图库 组态界面 组态工具

RazorSQL for Mac(多功能SQL数据库管理器)支持M1/M2 v10.5.0注册激活版

Rose

数据库 RazorSQL下载 RazorSQL注册码

强大专业的设计排版工具Affinity Publisher 免激活最新

mac大玩家j

Mac软件 排版软件 排版工具

Final Cut Pro for Mac(fcpx视频剪辑)v10.7.0 中文版

Rose

mac软件下载 Final Cut Pro中文版 Final Cut Pro破解版 fcpx 视频剪辑软件

畅捷通的 Serverless 探索实践之路

Serverless Devs

云计算 Serverless AIGC

KaiwuDB 通过中国信通院“可信数据库”性能与稳定性评测

KaiwuDB

KaiwuDB 可信数据库

MySQL数据库中SQL语句分几类?

小齐写代码

初识 OpenCV

数新网络官方账号

OpenCV 计算机视觉

KeyShot 2023.3 Pro for mac(3D渲染和动画制作软件) v12.2.2激活版

mac

苹果mac Windows软件 KeyShot Pro 高级渲染和动画软件

石磊:以人为本,精细运营 ,企业招聘管理的下半场

用友BIP

智能招聘

Mac视频转码编辑工具 Compressor 4.7中文激活版 现已支持M3 Mac

Rose

Compressor Mac下载 Compressor破解版 Mac视频编码工具 Compressor for mac

记一次线上视频接口OOM问题

xfgg

Java

三分钟搞懂Serverless,互联网个人创业者必备

凌览

node.js Serverless 独立开发者

如何在 Mac 上创造一个纯 Windows 环境

Rose

Parallels Desktop

哈工大副校长刘挺访问度小满 推进人工智能等方面技术合作

科技热闻

Wireshark中的ARP协议包分析

小魏写代码

iMovie for Mac v10.4.0中文版 支持Macos14系统 兼容M3 Mac

Rose

iMovie Mac破解版 Mac视频剪辑工具 iMovie mac版 iMovie中文版下载

HarmonyOS开发案例分享:万能卡片也能用来玩游戏

HarmonyOS开发者

HarmonyOS

一起学Elasticsearch系列-脚本查询

Java随想录

Java 大数据 Elastic Search

​iOS Class Guard github用法、工作原理和安装详解及使用经验总结

淘宝订单接口在电商行业中的重要性及其实践

Noah

KeyShot2023pro安装包 附KeyShot注册机 适用于Mac/win

Rose

KeyShot2023pro安装包 KeyShot 注册机 3D渲染和动画软件

Mac电脑强大的fcpx视频剪辑:Final Cut Pro 中文最新

胖墩儿不胖y

视频处理工具 编辑视频 视频编辑器 视频管理

代购系统独立站的未来发展前景

Noah

每日一题:LeetCode-41. 缺失的第一个正数

Geek_4z9ami

面试 算法 数组 LeetCode 哈希表

微软远程管理Microsoft Remote Desktop怎么样?好用吗?

Rose

Mac远程控制软件 microsoft remote desktop mac破解软件下载 微软远程管理

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