< 返回版块

Folyd 发表于 2021-03-05 22:46

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 所有类型可见性默认都是私有,只有加 pubpub($PATH) 才能修改为公开可见,而 macro_rules 定义的宏却不是这样的,你需要使用 #[macro_export] 才能让这个宏公开。从 2021 Edition 开始,macro_rules 定义的宏默认为私有,同样需要加 pubpub($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

社区学习交流平台订阅:

评论区

写评论
whfuyn 2021-03-05 23:00

这个变量捕获和or模式匹配的改进都挺需要的。

1 共 1 条评论, 1 页