写点什么

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

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

关注

评论

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

Python代码阅读(第1篇):列表映射后的平均值

Felix

Python 编程 Code Programing 阅读代码

十大排序算法--插入排序

Ayue、

排序算法 8月日更

【Flutter 专题】132 图解 PaginatedDataTable 分页表格

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

基于ECS快速搭建 Docker 环境

若尘

Docker 服务器 8月日更

Druid 从控制台(Druid console)中查询字段

HoneyMoose

Python OpenCV 图像区域轮廓标记,可用于框选各种小纸条

梦想橡皮擦

8月日更

【Maven技术专题】如何使用Assembly插件实现自定义打包

码界西柚

maven assembly 8月日更

10万字Mysql实战文档,Java面试题汇总

Geek_f90455

Java 程序员 后端

2020-2021华为Java面试真题,内含福利

Geek_f90455

Java 程序员 后端

2021Java大厂高频面试题,原理+实战+视频+源码

Geek_f90455

Java 程序员 后端

2021Java开发现状分析,给大家安排上!

Geek_f90455

Java 程序员 后端

synchronized 优化手段之锁膨胀机制!

王磊

Java 并发 8月日更

netty系列之:netty初探

程序那些事

Java 响应式编程 Netty nio 程序那些事

复杂多变场景下的Groovy脚本引擎实战

vivo互联网技术

敏捷开发 脚本语言

社会心理学-自尊

箭上有毒

读书笔记 8月日更

12年高级工程师的“飞升之路”,面试题+笔记+项目实战

Geek_f90455

Java 程序员 后端

2020-2021阿里巴巴Java面试真题解析,详细的Java学习指南

Geek_f90455

Java 程序员 后端

架构实战营 - 模块四作业

思梦乐

Druid 从控制台(Druid console)中删除过滤器和运行查询

HoneyMoose

docker入门:postgresql安装及可视化界面portainer使用

小鲍侃java

8月日更

Rust从0到1-模式-可反驳性

rust 模式 Patterns Refutability 可反驳性

多语言ASR?没有什么听不懂,15种语言我全都要

华为云开发者联盟

语言 ASR 多语言ASR 单语模型 Conformer

10天拿到字节跳动Java岗位offer,互联网行业“中年”危机

Geek_f90455

Java 程序员 后端

15分钟的字节跳动视频面试,工作感悟

Geek_f90455

Java 程序员 后端

2020-2021华为Java面试真题,统统都会!

Geek_f90455

Java 程序员 后端

Druid 从控制台(Druid console)从 SQL 脚本转换为 JSON 格式的方法

HoneyMoose

Druid 的几个查询实例

HoneyMoose

Druid 通过 dsql 运行的时候提示错误 urllib2

HoneyMoose

【设计模式】原型

Andy阿辉

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

在线分数加减乘除计算器

入门小站

工具

索信达控股:银行4.0的AI世界——开启算法力的时代

索信达控股

人工智能 金融科技 银行

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