写点什么

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

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

关注

评论

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

解析数据科学,探索ChatGPT背后的奥秘

百分点科技技术团队

人工智能 数据科学 百分点科技 ChatGPT

自然语言处理技术原理

测吧(北京)科技有限公司

测试

ETL快速同步 用友u8数据方式

RestCloud

数据同步 用友 ETL

静态代码分析的这些好处,我竟然都不知道?

禅道项目管理

程序员 软件开发 自动化测试 知识分享 静态代码分析

每帧纵享丝滑——ToDesk云电脑、网易云游戏、无影云评测分析及ComfyUI部署

中杯可乐多加冰

无影云电脑 云电脑 云电脑平台 云电脑云桌面

如何使用Plotly和Dash进行数据可视化

华为云开发者联盟

Python 数据可视化 华为云 华为云开发者联盟 企业号2024年4月PK榜

YashanDB亮相数据技术嘉年华,展自主创新力量

YashanDB

什么是WAAP,对提高网络安全具有哪些重要的意义

德迅云安全杨德俊

熬夜整理的2W字DDD学习笔记

Java随想录

Java 设计模式 DDD

阿里云消息队列升级全新品牌 ApsaraMQ丨阿里云云原生 3 月产品月报

阿里巴巴云原生

阿里云 云原生

深度解读《深度探索 C++ 对象模型》之C++对象的内存布局

爱分享

c++ 内存 代码分析 C++对象模型 C++编程规范

NFTScan | 04.08~04.14 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan

龙智DevSecOps解决方案:集成Jira/Confluence/HelixCore/SonarQube等知名工具的技术实践与协作场景演示

龙智—DevSecOps解决方案

IDC最新数据:2023年浪潮信息存储跃居中国前二

财见

性能测试中唯一标识的JMH测试

FunTester

利用技术提升UI自动化测试的准确性

测吧(北京)科技有限公司

测试

图像目标检测的PyTorch实现:探索深度学习在目标识别中的应用

测吧(北京)科技有限公司

测试

拥抱信创新篇章,行云绽放麒麟软件携手认证

行云管家

信创 国产化 麒麟

更优性能与性价比,从自建 ELK 迁移到 SLS 开始

阿里巴巴云原生

阿里云 云原生 日志服务 sls

ODI(境外投资备案)作用、类别和申请流程详解

元太科技携手生态圈伙伴合作开发新一代电子纸货架标签

财见

2024上海国际智能汽车电子展览会

AIOTE智博会

自动驾驶展 智能驾驶展 汽车电子展

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