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 = \u0026amp;x;       // In Rust 2018, y lifetime ends here,    let z = \u0026amp;mut x;   // so this is ok.  }
  • 模块路径清晰度,旨在简化使用Rust模块系统的方式,包括extern crate用法的改变、简化模块路径,等等。
  • const fn,可以被用于任意常量上下文中,并在编译时进行求值。常量函数可以包括算术或布尔运算、调用其他常量函数等,但比正常函数具有更多的限制。Rust 2015中也提供了常量函数。
  const fn foo(x: i32) -\u0026gt; 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

Rust 1.31正式发布,首次引入Rust 2018新功能相关推荐

  1. iOS培训之iOS 8正式发布:增加多个新功能

    iOS培训之iOS 8正式发布:增加多个新功能 广州传智播客作为华南地区iOS培训的领头羊,对iOS培训课程的研究都是走在互联网发展的潮流最前沿,把最新最好的技术教导给学生.在课程体系外,还有很多有趣 ...

  2. Win10 20H2正式发布,对比旧版新功能一览

    微软在其官方网站发布了最新的Windows 10 20H2版(10月更新),根据微软的更新规则,春季版一般包含更多新功能,而秋季版更倾向于Bug修复,因此很多人对于20H2的期待程度并不高.但事实上, ...

  3. ERP系统31.83版本发布,八大新功能助力企业管理

    近日,ERP系统31.83版本正式发布.无处不在的互联网,正在改变企业与用户的连接方式,一旦享受过什么叫实时,就再也无法忍受延迟,一旦感受过什么叫便捷,就再也无法忍受繁琐,企业如何全方位提高服务效率和 ...

  4. 会声会影2018新功能分屏视频

    会声会影2018的一个重要的功能就是分屏视频,以往用户想要在视频内显示多个画面时,需要花费较长的时间来调整,而在2018里,通过修改现成的分屏模板即可实现这一效果.下面小编就带大家走进相册视频制作软件 ...

  5. Python 3.7 即将发布,引入多项新功能!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! Python 3.7 将于今年夏天发布,先来窥探一些新功能. Python 3.7 中有许多 ...

  6. Unity 2D Pixel Perfect 2018新功能文档 自制中文翻译

    2D Pixel Perfect | 2D完美像素 概览 2D完美像素工具包包含可以确保你的像素作品离散且清晰并且可以在运动过程中保持稳定的完美像素摄像机组件. 这是一个简单的可以进行所有分辨率变化时 ...

  7. Planbar 2018 新功能 BIM 加密狗更新

    有需要了解TMM503904000 1.预制构件整体复制至其他楼层 预制构件带钢筋.预埋件可以快速复制到其他楼层,并且正确显示 ◆实现快速复制 ◆信息无丢失 planbar2018 软件加密狗破解复制 ...

  8. 腾讯回应“QQ 冻结”;高德上线“家人地图”惹争议;Linux 内核讨论引入 Rust 代码 | 极客头条

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 一分钟 ...

  9. 腾讯回应“QQ 冻结”;高德上线“家人地图”惹争议;Linux 内核讨论引入 Rust 代码| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

最新文章

  1. C#编码简单性之代码篇(如何编写简短的C#代码,随时更新)
  2. 用REDIS实现分布式缓存
  3. 50种Matplotlib科研论文绘图合集,含代码实现
  4. concat函數 函數concat 可以用來合拼兩個或以上的字串。
  5. 类型之间的相互转换php,php学习之数据类型之间的转换介绍
  6. python中locals函数_Python神奇的内置函数locals的实例讲解
  7. docker修改php.ini,docker部署更改php的upload_max_filesize
  8. T-SQL: Adding More to Our Queries
  9. JS:ES10新特性
  10. 【linux学习笔记五】帮助命令
  11. 维修电工技能实训考核装置
  12. 基于MATLAB的车牌识别实现
  13. arduino超声波测距接线图详细_Arduino学习笔记A2 - Arduino连接超声波传感器测距
  14. EXCEL【数据处理之数据清洗——缺失数据处理】
  15. GPS信息中提取经纬度坐标信息
  16. 通过HOST VIP连接Oracle数据库
  17. Word文档如何从中间某一页开始设置页码
  18. java如何保证mq一定被消费,RabbitMQ如何保证队列里的消息99.99%被消费?
  19. Meanshift 和 Camshift
  20. C程序--输出大写英文字母

热门文章

  1. go IDE 编译环境设置win32和win64
  2. power designer 连接数据库提示“connection test failed”
  3. php string pos,有关pos()的文章推荐10篇
  4. 大疆精灵2v+怎么连接手机_车载蓝牙播放器怎么用,手机蓝牙怎么连接车载蓝牙放音乐...
  5. MySQL高级 trace工具
  6. Nacos源码覆盖实例列表
  7. Jetty 与 Tomcat 比较,及性能分析
  8. 字符串转换成ascii码
  9. 字节流读数据(一次读一个字节数组数据)
  10. BufferedOutputStream_字节缓冲输出流