写点什么

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:001785
用户头像

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

关注

评论

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

后台开发:核心技术与应用实践 — C++

奔着腾讯去

c++ 面向对象 服务器开发 C++后台开发

中国数字货币释放利好消息!

CECBC

Docker 镜像和容器

飞跃

Docker 520 单身福利

多线程 VS 多进程(三)

若尘

多线程 Python编程 5月日更

Mac电脑:安装cnpm(补充步骤)

三掌柜

5月日更

Node.js使用数据库LevelDB:超高性能kv存储引擎

devpoint

nodejs leveldb

波特五力模型

石云升

创业 战略 职场经验 5月日更

可以学习一下安全方面的知识

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

分布式锁

邱学喆

分布式锁 redis分布式锁 zookeeper分布式锁

未来每个人的生活可能都会离不开区块链

CECBC

C#常用特性和快捷键

fox

520单身福利

关于爱情的碎碎念

穿过生命散发芬芳

520单身福利

Docker 入门

飞跃

活性炭能去甲醛吗?

小天同学

科普 5月日更 活性炭

智慧公安微警务APP搭建,公安信息化建设

区块链专家与媒体面对面 | “区块链让数据产生价值”

CECBC

数据仓库如何确定主题域?

数据社

数据仓库 5月日更

人工智能--野人过河

空城机

Java 算法 5月日更 大学笔记

学习笔记之:05 | 数组:一秒钟,定义 1000 个变量

Nydia

学习

翻译:谁将在AI中赚钱?by Simon Greenman John 易筋 ARTS 打卡 Week 48

John(易筋)

ARTS 打卡计划

打破固有思维(十六)

Changing Lin

5月日更

显示器的未知之海:从电脑窗口到数字世界的Mate级探险

脑极体

架构学习笔记:架构设计3原则

风翱

架构 5月日更

Flink的分布式缓存

大数据技术指南

flink 5月日更

5分钟速读之Rust权威指南(七)

wzx

rust

“产学合作,协同育人”——安谋中国集成电路人才发展趋势沙龙圆满举行

脑极体

520有感而发

yu

520 单身福利

521的祝福-北爱的回忆

数据一哥

520单身福利 520 单身福利

工业互联网平台赋能需充分挖掘数据价值

内卷是必然

ES_her0

5月日更

华仔训练营模块4作业

方堃

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