博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rust 1.31正式发布,首次引入Rust 2018新功能
阅读量:6885 次
发布时间:2019-06-27

本文共 1205 字,大约阅读时间需要 4 分钟。

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的满意度,并说明了语言和工具的常见缺点。

查看英文原文

转载地址:http://zkibl.baihongyu.com/

你可能感兴趣的文章
彻底厘清真实世界中的分布式系统
查看>>
HybridDB for PostgreSQL上手指南
查看>>
『0013』 - Solidity Types - 固定大小字节数组(Fixed-size byte arrays)
查看>>
java-并发-ConcurrentHashMap高并发机制-jdk1.6
查看>>
Kubernetes之服务质量保证(QoS)
查看>>
大数据业务应用场景
查看>>
低带宽DDoS攻击可瘫痪防火墙
查看>>
IBM云计算扩展在华Bluemix生态系统
查看>>
制造业大数据分析打造新一代智能工厂
查看>>
存储界谁可以取代EMC?
查看>>
阿里云携手开源中国平台发百万悬赏项目
查看>>
弹性伸缩服务1-2-3
查看>>
苏州协鑫:数据智能开启“工业互联网”中国路径
查看>>
hey,那个云你让我坚持了梦想
查看>>
打造深度学习的云端实验室
查看>>
mybatis mapper的配置
查看>>
Kafka 0.10.0
查看>>
BP人工神经网络的介绍与实现
查看>>
Win7系统删除网络驱动器盘符
查看>>
Hybrid框架UI重构之路:六、前端那点事儿(Javascript)
查看>>