Rust 1.31正式发布,首次引入Rust 2018新功能

2018 年 12 月 11 日

Rust 1.31正式发布,首次引入Rust 2018新功能

Rust 1.31 是第一个实现了 Rust 2018 独有新功能并且不保证与现有代码库兼容的版本。Rust 2018 相关工作正在进行中,而 Rust 1.31 只是整个三年开发周期的开始,这个开发周期将对这门语言进行重要的扩展。


InfoQ 之前已有报道,Rust 2018 的目标是打包自上一个主要版本(Rust 2015)以来的所有已经出现的语言变更。此外,Rust 2018 将包含一些可能会破坏现有源代码的变更。比如引入了新的关键字,例如 try、async、await 等,它们可能与变量或函数名称产生冲突。因此,能够选择要使用的语言版本对于编译现有代码库来说非常关键。为了实现这种方法,Rust 团队已经在 Rust 1.31 中一次性地包含了所有重大变化,尽管有些尚未完全实现。例如,他们保留了新关键字,但还不起作用,因此试图使用它们来命名变量或函数的开发人员会收到错误。需要指出的是,Rust 2015 和 2018 软件包可以在同一个程序中共存,这意味着 Rust 2018 程序可以使用 Rust 2015 软件包,反之亦然。


Rust 1.31 引入了很多主要语言功能,包括:


  • 非词法生命周期,让Rust可以借用检查器查看变量的实际生命周期而不必将其绑定到词法作用域。


fn main() {        let mut x = 5;        let y = &x;       // In Rust 2018, y lifetime ends here,    let z = &mut x;   // so this is ok.  }
复制代码


  • 模块路径清晰度,旨在简化使用Rust模块系统的方式,包括extern crate用法的改变、简化模块路径,等等。

  • const fn,可以被用于任意常量上下文中,并在编译时进行求值。常量函数可以包括算术或布尔运算、调用其他常量函数等,但比正常函数具有更多的限制。Rust 2015中也提供了常量函数。


  const fn foo(x: i32) -> i32 {    x + 1  }  const SIX: i32 = foo(5);
复制代码


不过,Rust 2018 的推出并不意味着 Rust 2015 已经结束。事实上,Rust 团队计划将所有不会破坏兼容性的变更向后移植到 Rust 2015,尽管这将在稍后的时间点发生。


你可以通过运行 rustup update stable 来安装 Rust 1.31。要试用 Rust 2018 功能,你需要在 Cargo.toml 文件的[package]中指定 edition = “2018”。如果没有提供版本,Rust 编译器将默认使用 Rust 2015,以最大化源代码兼容性。


在一份相关的说明中,Rust 团队还发布了Rust 2018调查结果,旨在衡量用户对 Rust 的满意度,并说明了语言和工具的常见缺点。


查看英文原文Rust 1.31 Brings the First Rust 2018 Features, Non-lexical Lifetimes and Module Improvements


2018 年 12 月 11 日 06:004168
用户头像

发布了 731 篇内容, 共 359.6 次阅读, 收获喜欢 1824 次。

关注

评论 2 条评论

发布
用户头像
配图用错了,这个游戏也是叫Rust。
2018 年 12 月 11 日 11:34
回复
没有更多评论了
发现更多内容

轻轻一扫,立刻扣款,付款码背后的原理你不想知道吗?

楼下小黑哥

支付宝 微信支付 支付系统 付款码

中台是为了复用?未必!浅谈产业中台建设的特点与误区

孤岛旭日

架构 中台 企业中台 企业架构 产业互联网

五十年前的一桩公案:数据库关系模型的流行史(上)

青菜年糕汤

数据库 分布式数据库 数据库规范 关系型数据库 数据库设计

虚拟化Pod性能比物理机还要好,原因竟然是这样!

亨利笔记

Kubernetes 容器 k8s vSphere pod

缘起:很久很久以前

escray

学习 测试驱动开发实战营

一文带你搞懂RPC核心原理

松花皮蛋me

微服务 微服务架构 微服务冶理 RPC 远程调用

聊天机器人为什么这么难?

青菜年糕汤

人工智能 自然语言处理 搜索引擎 chatbot 聊天机器人

Netty 源码解析(五): Netty 的线程池分析

猿灯塔

我的关注清单

lmymirror

知识管理 关注清单 RSS

人人都要有经营意识

Neco.W

创业 重新理解创业 公司管理

实战营第一战:FizzBuzz

escray

学习 CSD 认证实战营

游戏夜读 | 做游戏选什么专业?

game1night

哲少荐书:这才是心理学

Jackey

心理学 读书

写在2020年五四青年节

耿老的竹林

个人成长

五十年前的一桩公案:数据库关系模型的流行史(下)

青菜年糕汤

数据库 分布式数据库 数据库规范 关系型数据库 数据库设计

Golang杂谈 - graceful shutdown为何离奇失效?

星语

golang 后端 平滑重启 服务端

File类的文件操作

Howe

Java File 文件 io

Web3极客日报#135

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

NIO看破也说破(一)—— Linux/IO基础

小眼睛聊技术

Linux 架构 后端 Netty nio

花更多的时间在自己的优势上

Neco.W

创业 自我管理 重新理解创业

我看拼多多黄峥:旧世界瓦解冰消

池建强

拼多多 黄峥

leetcode20.有效的括号

Damien

算法 LeetCode

python中的GIL锁和互斥锁问题

半面人

Python

如何成为一个高效的问题解决者?

汪锋

笔记:《如何系统思考》之因果回路图

wiflish

思维方式

企业如何选择物联网中台

老任物联网杂谈

物联网中台 IOT Platform 物联网平台

思维偏差与产品设计的关联思考

石君

产品设计 思维方式 安全产品设计

源码浅析 - CocoaLumberjack 3.6 之 DDLog

Edmond

ios log4j CocoaLumberjack SourceCode DDLog

python oop 指南

志学Python

Python python 爬虫 oop

我在极客大学算法训练营的收获

熊斌

极客时间 极客大学

Web3极客日报#134

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

Rust 1.31正式发布,首次引入Rust 2018新功能-InfoQ