Rust 1.53.0 发布

来源: OSCHINA
2021-06-19

Rust 1.53.0 版本现已发布。此版本包含了几个新的 language features 和许多新的 library features,包括期待已久的数组 IntoIterator 的实现。

IntoIterator for arrays

这是第一个让数组实现 IntoIterator 特性的 Rust 版本,意味着你现在可以通过 value 来迭代数组了:

for i in [1, 2, 3] {
    ..
}

同样,你现在可以将数组传递给需要T: IntoIterator的 methods:

let set = BTreeSet::from_iter([1, 2, 3]);
for (a, b) in some_iterator.chain([1]).zip([1, 2, 3]) {
    ..
}

从这个版本开始,数组在实现 IntoIterator 时有一个小小的变通,以避免破坏代码。编译器将继续把 array.into_iter() 解析为 (&array).into_iter(),就像该 trait 实现不存在一样。这只适用于 .into_iter() 方法的调用语法,并不影响任何其他语法,如 for e in [1, 2, 3], iter.zip([1, 2, 3]) 或 IntoIterator::into_iter([1, 2, 3]) ,它们都能正常编译。

官方表示,由于 .into_iter() 的这种特殊情况只是为了避免破坏现有的代码而需要的,所以其在今年晚些时候发布的新版本 Rust 2021 中将被删除。更多信息可参见版本公告

Or patterns

Pattern syntax 已扩展为支持|嵌套在 pattern 中的任何位置。这使得你可以编写Some(1 | 2),而不是Some(1) | Some(2)

match result {
     Ok(Some(1 | 2)) => { .. }
     Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => { .. }
     _ => { .. }
}

Unicode 标识符

标识符现在可以包含 non-ascii 字符。UAX #31 中定义的 Unicode 中的所有有效标识符字符。这包括来自许多不同脚本和语言的字符,但不包括表情符号。

编译器会对涉及不同脚本的潜在混淆情况提出警告。例如,使用看起来非常相似的标识符将导致一个警告。

warning: identifier pair considered confusable between `s` and `s`

在 Cargo 中支持 HEAD 分支名称

Cargo 不再假定 git 仓库的默认 HEAD 被命名为 master。这意味着你不再需要为来自默认分支为 main 的仓库的 git 依赖项指定branch = "main" 。

默认情况下增量编译保持关闭

增量编译在稳定版 Rust release channel 上已经默认关闭。该功能在 beta 版和 nightly release channels 上仍然可用。对于 1.53.0 稳定版,重新启用增量的方法与 1.52.1 相比没有变化。

有关更多信息,可参见详细的发行说明

展开阅读全文
1 收藏
分享
加载中
精彩评论
你什么时候放弃,记得说一声
2021-06-19 16:43
8
举报
Rust 必将越来越流行! 是第一个刚了解就让我心动的语言!
2021-06-19 10:42
5
举报
那估计要让你失望了,这一天不会到来!Rust的相关生态框架文档我都翻译好几个了。
2021-06-19 17:27
4
举报
所有权的理解需要对《计算机原理》这类学的比较扎实才好一点,的确是比较难。
他的两个新特性都是开创性的,是别的语言所没有的。
这种新特新需要我们抛开其它语言的惯性思维方式,从更高视角上去思考理解,不迷失我们工作实践的细节中,这样就好多了。
这个语言是难:对于搞底层,往往缺少高级抽象理解;对于搞应用的,往往缺少底层语言的细节知识。对于开发新手缺乏大量的知识点;对于职场熟人,又往往容易被职业训练的惯性思维框住。。。
最能适合这个语言的人:熟悉底层、理解上层、经验丰富、学习能力不减。。。
—— 这已经是人中龙凤了
2021-06-22 10:56
1
举报
其實我平常還會用F#這些函数式語言,不是難在高級特性,而是難在所有權。
2021-06-21 17:00
1
举报
最新评论 (12)
C++日常使用者表示這語言好難。
2021-06-21 11:14
1
回复
举报
可能时因为你仅仅了解C++才造成的,有的特性和高级语言比较像,如果了解一点就要好多了,反之亦然。
2021-06-21 14:09
0
回复
举报
其實我平常還會用F#這些函数式語言,不是難在高級特性,而是難在所有權。
2021-06-21 17:00
1
回复
举报
所有权的理解需要对《计算机原理》这类学的比较扎实才好一点,的确是比较难。
他的两个新特性都是开创性的,是别的语言所没有的。
这种新特新需要我们抛开其它语言的惯性思维方式,从更高视角上去思考理解,不迷失我们工作实践的细节中,这样就好多了。
这个语言是难:对于搞底层,往往缺少高级抽象理解;对于搞应用的,往往缺少底层语言的细节知识。对于开发新手缺乏大量的知识点;对于职场熟人,又往往容易被职业训练的惯性思维框住。。。
最能适合这个语言的人:熟悉底层、理解上层、经验丰富、学习能力不减。。。
—— 这已经是人中龙凤了
2021-06-22 10:56
1
回复
举报
精通C++都成梗了,就别嘲讽别人了吧。何况rust最开始的目标就有替代C++(重写Firefox)。
2021-06-21 14:31
0
回复
举报
+1
单单是符号使用量就已经让我感到头痛。
2021-06-21 15:34
1
回复
举报
符号在编程中已经远远不够用了,各种凑,难看死了!
2021-06-22 10:57
0
回复
举报
哈哈,不知道现在能不能用中文作为方法名了?
测试方法的命名迫不及待啊!
2021-06-21 10:57
0
回复
举报
rustup.exe update
rustup update
2021-06-19 17:57
0
回复
举报
Rust 必将越来越流行! 是第一个刚了解就让我心动的语言!
2021-06-19 10:42
5
回复
举报
你什么时候放弃,记得说一声
2021-06-19 16:43
8
回复
举报
那估计要让你失望了,这一天不会到来!Rust的相关生态框架文档我都翻译好几个了。
2021-06-19 17:27
4
回复
举报
更多评论
12 评论
1 收藏
分享
返回顶部
顶部