写点什么

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

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

关注

评论

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

K8s进阶之一文搞懂PV,PVC及SC

电子尖叫食人鱼

Kubernetes 容器

按钮导航组件 | 纯血鸿蒙组件库AUI

华哥的全栈次元舱

鸿蒙开发 纯血鸿蒙 ArkUI / eTS 鸿蒙组件库AUI AI极客

YashanDB 知识库|IMP 跨网络导入太慢?一文看懂原因与优化建议

数据库砖家

数据库

YashanDB 知识库|GBK 库插入生僻字乱码?别忽视编码转换这一环

数据库砖家

数据库

远控安全金标准,ToDesk、向日葵、网易UU安全功能盘点,是否能攻破防线

小喵子

远程办公 远程 远程控制软件

RocketMQ半消息对消费者不可见是如何实现的?——事务消息机制揭秘

量贩潮汐·WholesaleTide

Java RocketMQ

具身智能领域,全球Top50国/华人图谱(含具身智能赛道“师徒关系图”)

机器人头条

科技 大模型 人形机器人 具身智能

十年一诺:一张SPN获奖证书背后的技术征途

脑极体

通信

遭遇DDoS攻击为什么不能反击回去?

网络安全服务

CDN 服务器 DDoS 带宽 高防IP

【免费开源】积木报表ElasticSearch数据集使用实战

JEECG低代码

elasticsearch 数据可视化 报表 报表工具

微服务架构原理与开发实战!

程序员高级码农

程序员 微服务 架构师

YashanDB 知识库|主备切换怎么做?一主一备 & 一主两备完整操作指引

数据库砖家

数据库

AI 调教指南!一文教会你如何在 Trae IDE 中配置自定义规则

火山引擎开发者社区

AI 火山引擎

如何在通义灵码里使用 MCP 能力?

阿里巴巴云原生

阿里云 云原生 通义灵码 MCP

【免费开源】积木报表文件数据集使用实战

JEECG低代码

数据可视化 报表 报表工具

YashanDB 知识库|insert 写入乱码字符,CPU 占满、线程卡死?你可能踩到了 lex 死循环的坑

数据库砖家

数据库

集成指南:如何基于融云 Flutter IMKit 实现双端丝滑社交体验

融云 RongCloud

热点追踪+精准解读——火山引擎 AI 域名推荐上线!

火山引擎边缘云

域名解析 域名 域名备案 域名系统 AI Agent,

如何在通义灵码里使用 MCP 能力?

阿里云云效

阿里云 通义灵码 MCP

重磅预告|开源鸿蒙开发者大会2025举办在即

最新动态

【免费开源】积木报表MongoDB数据集使用实战

JEECG低代码

mongodb 数据可视化 报表 报表工具

React-native脚手架探索

溪抱鱼

typescript html React

混合编程会是软件产业发展的必然选择吗?

代码制造者

混合编程

「智元机器人」“稚晖君”彭志辉:机器人不玩“后空翻”,选择实用主义优先路线!

机器人头条

科技 大模型 人形机器人 具身智能

2025年PM产品力领航者大会 | 上海巅峰论道

新消费日报

YashanDB 知识库|删除用户组后 yasql 免密登录失效?问题可能出在这儿

数据库砖家

数据库

YashanDB 知识库|内存参数这么多,Share Pool 怎么配才不会报错?

数据库砖家

数据库

【有奖活动】 放“码”来战,端云一体化挑战赛

HarmonyOS SDK

harmoyos

Python 3.14 新特性盘点,更新了些什么?

不在线第一只蜗牛

Python

【浪潮海岳inDatax数据中台专栏】海岳inDataX“易宝特”流程自动化平台建设与实践

inBuilder低代码平台

大型网站架构实战!

程序员高级码农

Java 程序员 架构师

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