NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

史上最全的Java并发系列之Java中的锁的使用和实现介绍(二)

自然

多线程 并发 8月月更

五分钟搞定YAML

俞凡

云原生 yaml

计算机网络知识点全面总结(一篇全懂)

C++后台开发

网络编程 计算机网络 网络协议 底层原理 C/C++开发

React Server Components 介绍 亮点

HullQin

CSS JavaScript html 前端 8月月更

美团二面:如何解决 bin log 与 redo log 的一致性问题

飞天小牛肉

签约计划第三季

史上最全499道Java面试题:JVM+分布式+算法+锁+MQ+微服务+数据库

冉然学Java

Java 数据库 面试 算法 多线程

体验家辛济云:CEM不是MarTech,不仅要“从0到1”,更要规避“从1到0”

B Impact

Kubernetes rubbish如何回收

CTO技术共享

开源 签约计划第三季 8月月更

构建在Findora上的Forlend,具备隐私特性的借贷协议

EOSdreamer111

LAXCUS授权许可证 第1版

LAXCUS分布式操作系统

开源 分布式操作系统 软件许可证

开源一夏 | 使用 JavaScript 和 CSS 的简单字符计数器

海拥(haiyong.site)

开源 8月月更

千万级学生管理系统的考试试卷存储方案

张立奎

MySQL 原理与优化:意向锁,IS,IX

老崔说架构

首发!这份阿里强推的图文并茂的Mybatis 源码笔记将理论和实战完美结合

了不起的程序猿

Java 后端 mybatis JAVA开发 框架

SpringBoot整合oceanbase,实现oracle无缝切换到oceanbase

IT学习日记

数据库 分布式数据库 oceanbase 签约计划第三季 oracle迁移到oceanbase

Java程序的构造与执行

李印

编程语言 JVM Java core 8月月更

开源一夏 | AngularJS实战之依赖注入与应用实践

恒山其若陋兮

开源 8月月更

关于Http协议,你必须要知道的

TimeFriends

8月月更

Kubernetes eBPF多种玩法

CTO技术共享

开源 签约计划第三季 8月月更

Forlend:构建在Findora上,且具备隐私特性的借贷协议

股市老人

涨薪了!拿着GitHub标星80k的阿里性能优化笔记,把项目优化个遍

程序知音

Java 编程 程序员 性能优化 后端技术

2022最新发布!不愧是保姆级的SpringSecurity笔记

了不起的程序猿

Java spring 后端 JAVA开发 java程序员

Kubernetes 动态扩缩容

CTO技术共享

开源 签约计划第三季 8月月更

大揭秘:云网流量采集方案关键点

阿泽🧸

签约计划第三季 8月月更 云网流量采集

废除“网络君主制”,认识 Usenet ~

掘金安东尼

前端 网络 8月月更

Kubernetes宕机切换源码分析

黄继承

源码分析 kubelet Kubernetes 集群 宕机

Vue讲解系列- - -Nginx和Postman讲解

叶秋学长

Vue 8月月更

阿里P8熬了一个月肝出这份32W字Java面试手册,在Github标星31K+

冉然学Java

Java 面试 springboot 秋招 java面试·

为什么实际业务中不建议直接使用POI操作Excel?

IT学习日记

POI EasyExcel 签约计划第三季 java excel导出导入 poi和easyexcel对比

如何正确理解Java领域中的多线程模型,主要用来解决什么问题?

PivotalCloud

STM32入门开发 编写DS18B20温度传感器驱动(读取环境温度、支持级联)

DS小龙哥

8月月更

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