AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

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

关注

评论

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

VSD Viewer for mac(Visio绘图文件阅读器)

理理

Microsoft Outlook 2024 LTSC for Mac密钥版

理理

如何避免沟通工具选择不当的影响?

爱吃小舅的鱼

团队协作 工作效率 沟通工具

需求管理的重要性是什么?探索10款实用工具

爱吃小舅的鱼

需求管理工具 需求管理软件

三思护眼灯好用吗?专业人眼中的护眼台灯是什么样的?

电子信息发烧客

Mac苹果电脑打开原神显示error是怎么回事?crossover玩原神一打开就崩溃闪退怎么办

阿拉灯神丁

游戏 软件包 闪退 神界原罪 Mac游戏 CrossOver 24

Zypher Network:全栈式 Web3 游戏引擎,引领服务器抽象叙事

BlockChain先知

AutoCAD 2020 精简版 中文序列号及密钥 Mac/win

理理

Adobe Bridge 2024下载,Br2024中文破解版

理理

iWall for Mac(最好用的动态桌面壁纸软件)附壁纸资源 中文版

理理

crossover对苹果电脑有什么影响吗?mac用crossover损害电脑吗

阿拉灯神丁

游戏 CrossOver Mac下载 电脑配置 虚拟机软件 苹果电脑使用

grpc多语言通信之GO和DART

百度搜索:蓝易云

ftp客户端SecureFX 附激活码

理理

《使用Gin框架构建分布式应用》阅读笔记:p307-p392

codists

golang gin 编程人 codists

初期技术选型失误?找到补救方法

爱吃小舅的鱼

需求管理 技术选型 项目需求

解决Git上传文件到GitHub时收到 “GH001: Large files detected” 错误信息!

百度搜索:蓝易云

Ubuntu下Nginx配置ModSecurity详细思路及过程

百度搜索:蓝易云

哪些工具能帮助建立需求管理体系?8款推荐

爱吃小舅的鱼

需求管理 需求管理工具 需求管理软件

Mac杀毒软件哪个好用?这款神器让你的Mac安全无忧

阿拉灯神丁

杀毒软件 CleanMyMac X中文版 mac 效率工具

专为 Mac 用户设计的网络速度测试工具 InternetSpeedTest

理理

Remote Desktop mac破解版 简单好用的远程管理软件

理理

支付系统概述(十三B):资金安全保障之核对

agnostic

资金安全 支付系统设计与实现

Zypher Network:全栈式 Web3 游戏引擎,服务器抽象叙事的引领者

石头财经

如何应对技术栈迁移中的常见问题?

爱吃小舅的鱼

技术栈 团队沟通 技术兼容 团队技能

BetterMouse for Mac(鼠标增强软件)中文激活版

理理

体育赛事版权太贵?看看平台如何低成本实现合法直播!

软件开发-梦幻运营部

高效管理:解决项目信息更新不同步的策略

爱吃小舅的鱼

项目管理 团队沟通

为什么技术栈迁移会带来挑战?

爱吃小舅的鱼

技术栈 技术兼容 团队技能

Ubuntu20.04开机卡在[OK] Started ****,无法正常开机

百度搜索:蓝易云

Docker Ubuntu php nginx mysql redis开发环境部署教程

百度搜索:蓝易云

我对Agent员工与数据资产结合设计

软件工程师-罗小东

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