武汉的开发者们注意啦!AI技术战略、框架以及最佳实战尽在Azure OpenAI Day 了解详情
写点什么

Rust 1.22 将?操作符扩展到 Option 类型

  • 2017-11-26
  • 本文字数:710 字

    阅读完需:约 2 分钟

为了简化 Option 类型的处理,最新版本的 Rust 允许在 Option 类型上使用?操作符了。此外,该版本还改进了 macOS 版本编译器性能和调用栈。

操作符是 Rust 1.13 为简化 Result<T, E> 处理而引入的。之前,开发人员可以使用模式匹配或者try!操作符处理结果:

复制代码
let result = foo();
let mut result = match result {
Ok(val) => val,
Err(e) => return Err(e),
}
// 或者选用 try! 操作符
let mut result = try!(foo());

?操作符使下面这种简单许多的语法变得合法:

复制代码
let mut result = foo()?;
foo()?.bar()?.baz()?

类似的,开发人员现在可以使用下面的语法

复制代码
fn func_returning_option(...)
let val = func_returning_option(...)?

代替

复制代码
match func_returning_option(...) {
None => ... ,
Some(val) => ...
}

该版本对 Rust 语言语法的另外一项扩展是允许开发人员编写下面这样的代码:

复制代码
let mut x = 2;
let y = &8;
// 在 Rust 之前的版本中可以写成:x += *y
x += y;

该版本改进了libbacktrace库的 macOS 版本,提供了文件名和行号,之前只有macOS 上的调用栈上没有。这是通过使用 dladdr代替_NSGetExecutablePath实现的。

Rustdoc 新增了compile-fail测试,亦即,如果编译器无法编译特定的语句,测试就成功。例如,开发人员现在可以定义:

复制代码
/// ```compile_fail
/// let x = 5;
/// x += 2; // 不应该编译!
/// ```

Rustdoc 测试是为了保证文档中测试的即时性和正确性。

在工具方面,调试编译时间得到了改进,不过,Rust 团队没有提供有关这项改进的任何具体数值。

最后,Rust 1.22 将许多 API 固化了下来。要了解详细信息,请查看发布说明

查看英文原文 Rust 1.22 Extends the ? Operator to Option Types

2or to Option Types

2017-11-26 18:001196
用户头像

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

关注

评论

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

Nacos-spring-boot 0.2.10 发布,全面支持 Nacos2.0

阿里巴巴中间件

云计算 开源 云原生 中间件

全靠阿里内部(珠峰版)Java面试笔记,成功拿下12家大厂offer

编程菌

Java 编程 程序员 阿里 计算机

平台利用大数据割韭菜,消费者为何沦为砧板上的鱼肉

石头IT视角

【设计模式】策略模式

Andy阿辉

C# 后端 设计模式 8月日更

【架构训练营】模块五作业

zclau

模块五作业

河马先生

架构实战营

模块五作业

king

PAI:一站式云原生AI平台

阿里云大数据AI技术

架构实战营作业 M05

Shawn Liu

在线CSS代码压缩美化工具

入门小站

工具

架构实战营 模块五 作业

脉醉

#架构实战营

模块五作业:设计微博评论的高性能高可用计算架构

Felix

阿里P8整理的《百亿级并发系统设计》实战教程,实在是太香了

编程菌

Java 编程 程序员 阿里 计算机

MongoDB中间件工具mgm入门介绍(一)

liuzhen007

8月日更

有同学问我:Fetch 和 Ajax 有什么区别?

编程三昧

JavaScript ajax 大前端 8月日更 Fetch

架构实战营 - 模块 5- 设计微博系统中”微博评论“的高性能高可用计算架构

蔸蔸

[架构实战营] 模块五作业

xyu

#架构实战营

常见酒店行业术语

IT蜗壳-Tango

8月日更

架构实战营 模块五 作业

三叔叔_拖延症晚期

架构训练营 模块五

小卷儿

架构实战营模块5作业

技术是伙伴

架构实战营

微服务的演进之路

卢卡多多

微服务 8月日更

模块五作业

绝影

架构训练营

架构实战营模块五作业

老猎人

架构实战营

模块五作业

Testcase

架构实战营

【ClickHouse】 核心特性

LeifChen

Clickhouse 8月日更

”微博评论“的高性能高可用计算架构

feitian

[架构实战营一期] 模块五作业

trymorewang

架构实战营

模块五作业-微博评论-高性能高可用架构

babos

#架构实战营

架构实战训练营第五模块作业

子豪sirius

架构实战营

微博评论高性能高可用方案设计

gawaine

架构实战营

Rust 1.22将?操作符扩展到Option类型_语言 & 开发_Sergio De Simone_InfoQ精选文章