10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

文本数据标注已上线,支持文本分类、实体识别|ModelWhale 版本更新

ModelWhale

人工智能 机器学习 云计算 数据分析 编程建模

大数据培训的方法有哪些

小谷哥

初学者前端培训机构需要注意什么

小谷哥

架构训练营模块五作业

gigifrog

架构训练营

打造IM生态,WorkPlus个性定制让企业业务管理再升级

BeeWorks

《解构领域驱动设计》-领域驱动设计统一过程

珑彧

Java 读书笔记 架构 方法论 领域驱动设计

《福布斯》评英特尔最新财报:业绩之外,制程路线图的稳步推进是真正的好消息

科技之家

基于Prometheus和Grafana实现对SpringBoot 应用的监控

皮特王

监控 Grafana Prometheus 大屏展示 告警平台

如何通过极狐GitLab 平滑落地 Java 增量代码规范?

极狐GitLab

Java DevOps 代码规范 极狐GitLab checkstyle

腾讯架构师极力推荐:Java多线程与Socket实战微服务框架

小小怪下士

Java 程序员 socket 多线程

java培训与线上自学哪个比较好?

小谷哥

参加大数据培训有什么好处

小谷哥

广告商、影视剧和晚会用的流行歌曲,版权都是怎么买的?

曲多多(嗨翻屋)版权音乐

音乐 三体 版权 影视 热点

为什么工厂要投资设备智能维护管理技术?

PreMaint

设备管理 设备预测性维护

高性能网络SIG月度动态:SMC 与 IBM 就扩展协议达成一致,virtio 支持 XDP 新特性

OpenAnolis小助手

开源 高性能网络 virtio 龙蜥sig smc

3D可视化:18个WebGL框架和Web3D图形库

2D3D前端可视化开发

WebGL 三维可视化 web3d 3d绘图引擎

为什么选择免费文件共享方法上的托管文件传输

镭速

线下学习前端培训机构怎么选?

小谷哥

Elasticsearch 利用 Enrich Processor 实现 MYSQL Join 的操作,支持 Nested 类型,具体应用。

alexgaoyh

MySQL elasticsearch ES 多表join enrich processor

私有化即时通讯软件可以保证员工的通讯安全吗?

BeeWorks

RESTful API 为何成为顶流 API 架构风格?

API7.ai 技术团队

API APISIX REST API

【SpringBoot】简述springboot项目启动数据加载内存中的三种方法

No8g攻城狮

springboot spring-boot

软件测试/测试开发 | Web测试方法与技术之JavaScript 讲解

测试人

软件测试 自动化测试 测试开发 Web自动化测试 web测试

《自定义工作流配置,springboot集成activiti,前端vue,完整版审批单据》

金陵老街

携手共进丨九科信息入围PKS体系生态企业展播

九科Ninetech

代码分享 | 情人节表白黑科技

鼎道智联

代码 情人节 爱心代码

找 ChatGPT 写 SQL? 不如试试 PromQL,三行解决复杂时序场景查询

Greptime 格睿科技

sql 云原生 时序数据库 PromQL 可观测

关于 OAuth 你又了解哪些?

API7.ai 技术团队

api 网关 Oauth APISIX

您有一个MatrixOne Beta Program专属权益待领取

MatrixOrigin

MatrixOrigin MatrixOne betaprogram MO企划

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