2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

Rust 1.21 发布,改进语法和对工具的支持

  • 2017-10-23
  • 本文字数:742 字

    阅读完需:约 2 分钟

Rust 团队刚刚发布了 Rust 1.21 ,带来更灵活的字面量语言特性、更稳定的库,并改进了对工具的支持。

新的语言特性允许将保存在静态内存里的字面量提升为值,这样就可以安全地传递引用。下面的代码现在是合法的:

复制代码
let x: &'static u32 = &5;
thread::spawn(move || {
println!("{}", x);
});

在上一个版本的 Rust 中,上面的代码无法通过编译,因为线程块里的变量 x 引用了字面量 5,5 是保存在栈上的,在线程块函数退出之后就会消失。为了扩展字面量的生存周期,Rust 1.21 的编译器将上述的代码转译成如下的形式:

复制代码
static FIVE: i32 = 5;
let x = &FIVE;

编译器现在可以在进行转译的同时运行 LLVM,所以使用的内存更少了。这样有两个好处:转译和 LLVM 可以同时进行,而且主线程可以在这两者之间切换。另外, rustup 现在支持通过“rustup component add rls-preview”的方式来安装 Rust 语言服务器(RLS)。根据 Rust 团队成员所述,这是安装 Rust 工具的第一步,其中包含了 RLS、Clippy 和 rustfmt,在 Rust 稳定版中就可以正常运行。

在库稳定性方面,现在可以使用 Iterator::for_each 代替 for 循环,如:

复制代码
// 旧代码
for i in 0..10 {
println!("{}", i);
}
// 新代码
(0..10).for_each(|i| println!("{}", i));

这样可以很容易地把多个迭代器串联在一起,如:

复制代码
(0..100)
.map(|x| x + 1)
.filter(|x| x % 2 == 0)
.for_each(|i| println!("{}", i));

另外, Ord 有序集合)的max 和min 函数现在很稳定了。Rc和Arc提供了更友好的接口,包括From<&[T]> where T: Clone、From、From、From<Box > where T: ?Sized 以及 From<Vec>。

可以通过运行 rustup update stable 获取最新的 Rust,更多细节可以参考 Rust 1.21 发布说明

查看英文原文 Rust 1.21 Improves Language Syntax and Tooling

2017-10-23 19:001766
用户头像

发布了 322 篇内容, 共 157.7 次阅读, 收获喜欢 148 次。

关注

评论

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

JVM - GC 问题分析常用两大指标

insight

3月日更

字符编码,原来是SQL不走索引的元凶之一!

Java小咖秀

MySQL 程序员 开发 bug 细节

Wireshark数据包分析学习笔记Day18

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

树集合总结

我是程序员小贱

3月日更

javax.imageio.IIOException: Unsupported Image Type

wjchenge

与前端训练营的日子 -- Week20

SamGo

学习

在你所在的公司(行业、领域),正在用大数据处理哪些业务?可以用大数据实现哪些价值?

跳蚤

思呓(2)

型火🔥

学习 架构 分布式 解耦

ES6中的新特性:Iterables和iterators

程序那些事

nodejs ES6 程序那些事

主流分布式文件系统总结

跳蚤

登陆用户身份获取

程序员架构进阶

架构设计 认证授权 28天写作 3月日更

uni-app跨端开发H5、小程序、IOS、Android(五):uni-app数据绑定

程序员潘Sir

html5 微信小程序 uni-app iOS Developer 3月日更

开源与商业产品

ES_her0

3月日更

第11周课后练习-安全稳定

潘涛

架构师训练营 4 期

宣传

Ashley.

LiteOS:剖析时间管理模块源代码

华为云开发者联盟

时间管理 时间 LiteOS huawei 任务

How to Connect 2 Cisco Switches Together

心在飞

MongoDB中的正则表达式

Kylin

mongodb 3月日更 21天挑战

翻译:《实用的Python编程》07_03_Returning_functions

codists

Python

在深圳,看见大鲸跃起的浪潮

工业互联网

线上问题的一点反思

风翱

复盘 3月日更 线上问题

mybatis 添加日志功能

xiezhr

mybatis 日志

基于数组或链表实现Map

Silently9527

数据结构和算法

《Redis 核心技术与实战》学习笔记 06

escray

redis 学习 28天写作 3月日更 Redis 核心技术与实战

寻找被遗忘的勇气(二十一)

Changing Lin

3月日更

Ubuntu 日常使用问题及解决

依旧廖凯

28天写作 3月日更

Swagger增强神器:Knife4j!用它轻松实现接口搜索、Word下载、接口过滤...

王磊

Java swagger Knife4j

Gradle无法访问Nexus私服仓库-offline

wjchenge

产品经理面试常见问题总结2

lenka

3月日更

深入剖析 | Java16语法特性

九叔(高翔龙)

Java 架构

翻译:《实用的Python编程》07_02_Anonymous_function

codists

Python

Rust 1.21发布,改进语法和对工具的支持_语言 & 开发_Sergio De Simone_InfoQ精选文章