QCon北京|3天沉浸式学习,跳出信息茧房。 了解详情
写点什么

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

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

关注

评论

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

企业管理升级,如何加速信息化转型?

雯雯写代码

企业管理 信息化

全网最全-混合精度训练原理

科技热闻

大数据开发之Kafka 存储选型

@零度

大数据 kafka

数据库事务与事务隔离级别

编程江湖

数据库 java编程

鸿蒙智联设备开发,这五大法宝你应该拥有|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

百度文库新一代文档阅读器!核心技术点全解析!

百度Geek说

大前端 文档 百度文库

前端开发JS框架之jQuery的基础知识分享

@零度

大前端 ​jQuery

提高儿童被拐意识

Tiger

28天写作

详解布隆过滤器的原理和实现

万俊峰Kevin

golang 微服务 微服务架构 布隆过滤器 go-zero

【Promise 源码学习】第十四篇 - 实现工具方法 promisify

Brave

源码 Promise 12月日更

kubernetes系列随笔03:kubernetes的发展和设计思想

Geek_cd6rkj

Docker Kubernetes 声明式

直播预告丨“Hello Ability:从页面跳转开始”周三晚不见不散

HarmonyOS开发者

HarmonyOS

Flink是如何支持批流一体的

编程江湖

大数据 flink

对话中国人寿:DevOps实践经验分享

龙智—DevSecOps解决方案

DevOps 中国人寿

字节码引用检测原理与实战

vivo互联网技术

编程语言 字节码编程 引用

Java开发框架Struts相关知识分享

@零度

struts JAVA开发

元气部落盲盒芒趣一番赏盲盒app开发搭建

风行无疆

ios技术分享| iOS 发布 framework 到 Cocoapods 以及常见问题

anyRTC开发者

ios 音视频 WebRTC CocoaPods Framework

Tapdata Cloud 版本上新!新增ClickHouse,ADB MySQL等5个数据源支持

tapdata

MySQL oracle

华云大咖说 | 华云校园信创云解决方案

华云数据

华云数据

测试 —— DevOps 快速交付的最大瓶颈

飞算JavaAI开发助手

更好用的Web端H265播放技术架构

百度开发者中心

智能视频

一劳永逸,使用 PicGo + GitHub 搭建个人图床工具

AlwaysBeta

GitHub 工具 PicGo 图床

Android C++系列:Linux线程(四)线程同步

轻口味

android 28天写作 12月日更

关于RocketMQ事务方面Demo

信息网络向价值网络演进过程中产品形态的思考

拍乐云Pano

聊聊Java底层那些事

码农参上

内容合集 签约计划第二季 技术专题合集 技术专区合集

给弟弟的信第5封|从高中到大学的体会

大菠萝

28天写作

高并发线下沙龙不容错过!

Qunar技术沙龙

高并发

WebView秒开方案探索

得物技术

CSS JavaScript html webview 大前端

2021年财经中国年会暨第十九届中国财经风云榜

大咖说

直播 财经 财经峰会

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