写点什么

Rust 2018 临近:设法从 Rust 2015 过渡

  • 2018-08-18
  • 本文字数:894 字

    阅读完需:约 3 分钟

据 Rust 核心团队报道, Rust 2018(对应 Rust 1.31)的第一个版本将于 2018 年 12 月 6 日准备就绪。从 Rust 2015 首次发布以来,大量新特性合并到一个新的标签下,大大丰富了这门语言。

据 InfoQ 报道,Rust 2018 侧重于提高语言的生产力,就是说,侧重于编译器性能,对许多语言特性进行优化,进一步改进工具、库和文档。新的 Rust 2018 语言特性有的已经出现在 Rust 近日的发布中,有的将会出现在 Rust 1.31 之前的版本中,包括 impl Trait、macros 2.0、SIMD 支持、“非词法作用域生命周期(non-lexical lifetimes)”、async/await 支持及模块改造。

最值得注意的是, Rust 2018 将稍微放宽稳定性保证,从而为可能破坏现有 Rust 2015 代码的语言变更提供支持。例如,Rust 2018 将包含 try 关键字,这可能会与一些代码中的函数或变量名冲突。

为了解决这个问题和其他类似的可能性,帮助开发人员设法从 Rust 2015 过渡到 Rust 2018,Rust 将遵循 C++ 和 Java 的步骤。这有几层含义:

  • Rust 2018 可以选择加入。如果你希望在现有的项目中使用 Rust 2018,那么你可以在项目的 cargo.toml 文件中加入 edition=‘2018’。为了防止版本激活码丢失,Rust 编译器将默认使用 Rust 2015。所有使用 cargo new 新建的项目将默认加入 edition = ‘2018’。
  • 由于 Rust 编译器既支持 Rust 2015,又支持 Rust 2018,所以你可以在同一个项目中组合使用依赖其中任意一个 Rust 版本的依赖项。这让你可以在 Rust 2018 程序中使用 Rust 2015 依赖项,也可以在 Rust 2015 项目中使用 Rust 2018 依赖项。
  • 语言核心将保持不变,就是说,Rust 2018 将只包含表层的破坏性更改,如上面提到的 try 关键词,或者是一些警告转换成了错误,等等。

此外,Rust 2018 将包含一个新工具 cargo fix,这个工具可以帮助开发人员转换现有的代码库,实现代码的逐步过渡,采用 Rust 2018 推荐的新特性和习惯用语。

另外,Rust 核心团队已于近日发布了 Rust 1.28 ,引入了全局分配器,让开发人员可以提供自己的内存分配器,以代替系统分配器; NonZero 数值类型,优化内存;改进错误信息和格式化。

查看英文原文: Rust 2018 is Approaching: Managing the Transition from Rust 2015

2018-08-18 03:362119
用户头像

发布了 1008 篇内容, 共 432.5 次阅读, 收获喜欢 346 次。

关注

评论

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

工赋开发者社区 | 大“火”的扩散模型综述又一弹!UCF等《视觉扩散模型》综述,20页pdf详述三种通用的扩散建模框架

工赋开发者社区

[SSM]异常处理

十八岁讨厌编程

Java 后端 9月月更

全新 Amazon RDS for MySQL 和 PostgreSQL 多可用区部署选项

亚马逊云科技 (Amazon Web Services)

边缘计算技术及其安全

阿泽🧸

边缘计算 9月月更

【MySQL 进阶】事务二

六月暴雪飞梨花

MySQL 事务 9月月更 InnoDB存储引擎

第四章 C语言之牛客网刷题📖笔记

Dream-Y.ocean

c 算法 9月月更

[MyBatisPlus]MyBatisPlus简介、入门案例

十八岁讨厌编程

Java 后端开发 9月月更

华为云快成长直播间云会议专场,华为员工都在用的高效办公神器

科技云未来

大数据ELK(三):Lucene全文检索库介绍

Lansonli

9月月更 EKL

社招前端一面经典手写面试题集锦

helloworld1024fd

JavaScript 前端

《Java面试考点大全》全网首发,带你摸熟20+互联网公司的面试考点!

收到请回复

Java 云计算 开源 架构 编程语言

Java 学习 --SpringBoot 常用注解详解(二)

六月的雨在InfoQ

springboot 注解 Spring Bean @Component 9月月更

2022-09-16:以下go语言代码输出什么?A:101;B:100;C:1;D:2。 package main import ( “fmt“ ) type MS struct {

福大大架构师每日一题

golang 福大大 选择题

【C语言】自定义类型(结构体类型+枚举类型+联合体类型)[进阶篇_ 复习专用]

Dream-Y.ocean

c 结构体 9月月更

高级前端手写面试题

helloworld1024fd

JavaScript 前端

每日算法刷题Day11-最大公约数、数组去重

timerring

算法题 9月月更

【MySQL进阶】事务一

六月暴雪飞梨花

MySQL 事务 9月月更 InnoDB存储引擎

【指针内功修炼】函数指针 + 函数指针数组 + 回调函数(二)

Albert Edison

数组 指针 C语言 9月月更 指针数组

PC市场如何再起波澜?荣耀的创新或是答案

脑极体

Java学习--SpringBoot 常用注解详解(一)

六月的雨在InfoQ

Spring Boot Spring MVC Spring注解 9月月更

链游版羊了个羊-SeedX,17号上线欢迎挑战

BlockChain先知

[SpringBoot]SpringBoot整合第三方技术

十八岁讨厌编程

Java 后端 9月月更

实时云渲染 VS 本地渲染,全面横向对比

3DCAT实时渲染

测试左移-快速玩转Debug

转转技术团队

问题排查 测试debug

无限道具教程最新版9.17——大熊G

大熊G

羊了个羊

软件测试 | 测试开发 | app自动化测试(Android)--App 控件定位

测吧(北京)科技有限公司

测试

云办公时代SaaS行业如何保证用户使用体验,提高用户留存率?

Baklib

SaaS 帮助文档

加速 Amazon RDS for MySQL 只读副本提升

亚马逊云科技 (Amazon Web Services)

MySQL RDS

Rust 2018临近:设法从Rust 2015过渡_DevOps & 平台工程_Sergio De Simone_InfoQ精选文章