Rust 发布 1.32 版本,跟踪、模块化、宏等方面均有改进

栏目: 编程语言 · Rust · 发布时间: 5年前

内容简介:Rust 1.32 提供了许多新的语言特性,用于改善开发者的程序调试体验。此外,Rust 现在默认使用系统分配器来分配内存,完成了模块化系统的相关工作,这让它变得更容易使用。新的 dbg! 宏极大简化了输出调试信息任务。例如,如果要打印变量 x 的值,现在可以使用 dbg!(x),而不是 println!(“{:#?}”,x);。另外,dbg! 还会自动打印出正在被打印的变量所在的文件和行号。dbg! 是一个会返回打印值的函数,因此可以被用在表达式中,如下所示:

Rust 1.32 提供了许多新的语言特性,用于改善开发者的程序调试体验。此外,Rust 现在默认使用系统分配器来分配内存,完成了模块化系统的相关工作,这让它变得更容易使用。

新的 dbg! 宏极大简化了输出调试信息任务。例如,如果要打印变量 x 的值,现在可以使用 dbg!(x),而不是 println!(“{:#?}”,x);。另外,dbg! 还会自动打印出正在被打印的变量所在的文件和行号。dbg! 是一个会返回打印值的函数,因此可以被用在表达式中,如下所示:

复制代码

fnfactorial(n:u32) ->u32{
ifdbg!(n <=1) {
dbg!(1)
}else{
dbg!(n * factorial(n -1))
}
}

上面的代码将输出以下内容,这样可以很容易地跟踪递归的每个执行步骤:

复制代码

[src/main.rs:3] n <=1=false
[src/main.rs:3] n <=1=false
[src/main.rs:3] n <=1=false
[src/main.rs:3] n <=1=true
[src/main.rs:4]1=1
[src/main.rs:5] n * factorial(n -1) =2
[src/main.rs:5] n * factorial(n -1) =6
[src/main.rs:5] n * factorial(n -1) =24
[src/main.rs:11] factorial(4) =24

InfoQ 之前已经报道了 Rust 1.31 引入的模块改进 ,它使模块的使用更加简单,包括更好的模块路径解析,从而简化了模块语法。Rust 1.32 更进一步,提供了统一路径,它放宽了 crate、self 或 super 必须跟在 use 声明之后的限制,从而支持非导入路径。例子如下:

复制代码

enumColor{Red,Green,Blue}

useColor::*;

Rust 1.32 还通过引入 literal 模式匹配器和使用? 改进了宏系统。例如,下面的两个宏分别定义了一个规则,当提供的节点列表分别零次或多次匹配给定模式的字面量时,将选择其中的一个规则进行展开:

复制代码

macro_rules!m1{
($lt:literal)=> {};
}

macro_rules!m2{
($(a)?) => {}
}

Rust 1.32 默认使用系统分配器分配内存,并让旧的默认分配器 jemalloc 成为可选项。在 Rust 1.28 之前,唯一可用的分配器是 jemalloc,它的起源可以追溯到 Rust 拥有自己的类 erlang 运行时时代。现在,这个运行时非常大,Rust 团队不断地将它缩减到一种极简的运行时,就像 C 语言和 C++ 等语言的运行时那样。jemalloc 是旧运行时的最后残余,它仍然占每个 Rust 二进制文件约 300KB 的空间。因此,先是在 Rust 1.28 中禁用,然后在 Rust 1.32 中作为可选项,因为它在某些情况下可以提供性能方面的优势。

如果你对 Rust 的最新特性感兴趣,请不要错过 官方发行说明

查看英文原文:

https://www.infoq.com/news/2019/01/rust-1.32-released


以上所述就是小编给大家介绍的《Rust 发布 1.32 版本,跟踪、模块化、宏等方面均有改进》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浅薄

浅薄

[美] 尼古拉斯·卡尔 / 刘纯毅 / 中信出版社 / 2010-12 / 42.00元

《浅薄:互联网如何毒化了我们的大脑》在我们跟计算机越来越密不可分的过程中,我们越来越多的人生体验通过电脑屏幕上闪烁摇曳、虚无缥缈的符号完成,最大的危险就是我们即将开始丧失我们的人性,牺牲人之所以区别于机器的本质属性。——尼古拉斯•卡尔“谷歌在把我们变傻吗?”当尼古拉斯•卡尔在发表于《大西洋月刊》上赫赫有名的那篇封面文章中提出这个问题的时候,他就开启了人们热切渴望的期盼源泉,让人急于弄清楚互联网是在......一起来看看 《浅薄》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试