写点什么

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

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

关注

评论

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

「架构师训练营 4 期」 第八周 - 001&2

凯迪

架构师训练营 4 期

递归的人生哲学

Nick

数据结构 算法 递归

《函数式编程精粹》(2) 热身:A STACK BASED CALCULATOR

陈皓07

优化JAVA代码总结

跳蚤

数据库规范设计说明书 整理

edd

架构师进阶之《Your Mouse is a Database》

陈皓07

浅谈JVM 垃圾回收原理

跳蚤

Elasticsearch Query Phase

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

为何要构建团队契约

Bruce Talk

敏捷 Agile

《函数式编程精粹》(1) 函数式思考

陈皓07

并发与并行

ES_her0

28天写作

join为啥会阻塞主线程?

叫练

join

网络故障的排错思路指南

架构师训练营课程纲要

陈皓07

秒杀系统的难点在哪?如何突破?

跳蚤

APP启动流程图

林亚超

微服务架构设计与最佳实践

万俊峰Kevin

微服务 go-zero Go 语言

架构师进阶之《做踏实的架构》

陈皓07

架构师训练营第八周作业 - 命题作业

阿德儿

【答疑点评必看】如何从「数据范围」中找到解题「突破口」...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

博文推荐 | Apache Pulsar 延迟消息投递解析

Apache Pulsar

kafka 开源 RocketMQ pulsar Apache Pulsar

Java 并发系列(一):多线程三大特性

TroyLiu

Java 多线程 原子性 可见性 有序性

不写代码可以写爬虫程序吗?老师说可以,无编码学爬虫之一。

梦想橡皮擦

Python 28天写作 2月春节不断更

第十三周作业&总结

胡益

第8周课后练习-性能优化二

潘涛

架构师训练营 4 期

《DDD with TLA+》(3) DEBUG & MODELING

陈皓07

翻译:《实用的Python编程》03_01_Script

codists

Python

译文 | 深度剖析 Pulsar Functions

Apache Pulsar

大数据 kafka 开源 pulsar Apache Pulsar

《函数式编程精粹》(3) Functional Design

陈皓07

《DDD with TLA+》(1) 建模思考

陈皓07

《DDD with TLA+》(2) 系统行为

陈皓07

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