Rust 2021 Edition 计划10月21号发布
Rust 采用每六周一个小版本和每三年一个 Edition 版本的方式来迭代更新。相比于 2018 Edition,2021 Edition 会是一个相对小的版本,官方计划于 2021年10月21号(1.56)正式发布。目前并没有完全确定下来哪些功能将纳入 2021 Edition,但有部分特性是已经确定好的了,这些特性包括:
-
Prelude 加入新的 trait:
TryFrom
/TryInto
,FromIterator
-
更 ergonomic 的闭包变量捕获规则。
现在的闭包变量捕获非常严格,就算你只引用了单个 struct 的字段,它也会把整个 struct 捕获进来。新的规则会做到尽量小范围的捕获变量,比如下面两个例子在 2018 Edition 编译不通过,但是 2021 Edition 是可以的:
let _a = &mut foo.a;
|| &mut foo.b; // (Edition 2018) Error! cannot borrow `foo`
let _a = &mut foo.a;
move || foo.b; // (Edition 2018) Error! cannot move `foo`
- 改善
or
模式匹配
// 以前需要这么写的或规则匹配:
Some(Enum::A) | Some(Enum::B) | Some(Enum::C) | Some(Enum::D) => ..
// 2021 Edition 之后可以写成这样了!
Some(Enum::A | Enum::B | Enum::C | Enum::D) => ..
- 统一
macro_rules
定义的宏的默认可见性,移除#[macro_export]
和#[macro_use]
宏:
Rust 所有类型可见性默认都是私有,只有加
pub
或pub($PATH)
才能修改为公开可见,而macro_rules
定义的宏却不是这样的,你需要使用#[macro_export]
才能让这个宏公开。从 2021 Edition 开始,macro_rules
定义的宏默认为私有,同样需要加pub
或pub($PATH)
才能修改可见性。#[macro_export]
和#[macro_use]
这两个宏就没什么用了,直接移除。
链接:https://blog.rust-lang.org/inside-rust/2021/03/04/planning-rust-2021.html
Rust 编译器后端升级为 LLVM 12
链接:https://github.com/rust-lang/rust/pull/81451
rust-gpu v0.3 发布
小编去年的日报 (日报链接)有到过 Embark 公司尝试为了让 Rust 成为 GPU 编程的一等公民,发布了 rust-gpu 这个 crate 来替代 OpenGL 和 DirectX 的着色器语言。现在这个 crate 又迈出了很关键的一步,他们的游戏引擎使用 Rust 完全替代了 GLSL/HLSL !
链接:https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.3.0
synth - 一个 Rust 编写的声明式数据生成器
官方宣称 synth 是一个 faker 和 HashiCorp 的 Terraform 的混合产品,比 faker 强大,比 Terraform 简单。小编看了一下,非常不错!
链接:https://github.com/openquery-io/synth
From 日报小组 Folyd
社区学习交流平台订阅:
评论区
写评论这个变量捕获和or模式匹配的改进都挺需要的。