博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rust发布1.32版本,跟踪、模块化、宏等方面均有改进
阅读量:6372 次
发布时间:2019-06-23

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

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

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

fn factorial(n: u32) -\u0026gt; u32 {    if dbg!(n \u0026lt;= 1) {        dbg!(1)    } else {        dbg!(n * factorial(n - 1))    }}

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

[src/main.rs:3] n \u0026lt;= 1 = false[src/main.rs:3] n \u0026lt;= 1 = false[src/main.rs:3] n \u0026lt;= 1 = false[src/main.rs:3] n \u0026lt;= 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.32更进一步,提供了统一路径,它放宽了crate、self或super必须跟在use声明之后的限制,从而支持非导入路径。例子如下:

enum Color { Red, Green, Blue }use Color::*;

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

macro_rules! m1 {    ($lt:literal) =\u0026gt; {};}macro_rules! m2 {    ($(a)?) =\u0026gt; {}}

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

如果你对Rust的最新特性感兴趣,请不要错过。

查看英文原文:

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

你可能感兴趣的文章
SQLServer存储过程返回值总结
查看>>
Python画图matplotlib展示图中中文乱码
查看>>
高效5步走,高速搭建Hadoop2伪分布环境
查看>>
项目中遇到的HQL查询问题
查看>>
Cocos2d-x学习笔记(四) 布景层的加入移除
查看>>
(转) Universal-Image-Loader使用大全(史上最屌)
查看>>
Web 文件上传 目录
查看>>
NPAPI插件开发详细记录:插件开发入门
查看>>
【DBCP】DBCP基本配置和重连配置+spring中配置
查看>>
SpringCloud学习笔记(7)——Sleuth
查看>>
【如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?】
查看>>
Generative Adversarial Nets[Introduction]
查看>>
mybatis源码解读(四)——事务的配置
查看>>
lodash 展平数组 flatten flattenDeep
查看>>
将自己写的HDL代码封装成带AXI总线的IP
查看>>
NotePad++ 配置Python工作环境
查看>>
Android launchMode SingleTask newIntent 的问题
查看>>
跨域单点登录实现(使用iframe)_勇敢的心_百度空间
查看>>
解决VS2010在程序根目录生成ipch文件夹和.sdf格式文件问题
查看>>
聚类算法效果评估entropy purity nmi
查看>>