写点什么

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

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

关注

评论

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

泛微全新低代码平台e-builder发布,让应用构建更智能、协同、全程数字化

极客天地

谈国产替代---从新出发

统信软件

操作系统 国产化替代

我用低代码平台,简单搭建了一套管理系统

互联网工科生

低代码 低代码平台

突破放量困境:百度营销放量神器的高级应用指南!

极客天地

基于虚拟仿真技术的汽车燃油泵控制

DevOps和数字孪生

数字孪生 虚拟仿真 汽车行业

开发者故事 | 我和openGemini有个约会

华为云开源

时序数据库 开源社区 开发者故事

Nxyz是怎么样的一个搜索平台?

币离海

区块链 Web3.0 nxyz

ONLYOFFICE:一个免费、开源、跨平台的办公神器

陈橘又青

远程办公 文档 协同办公 协同文档

“火焰杯”软件测试赛,河南工业大学人工智能与大数据学院获奖

测试人

免费的国产数据集成平台推荐

谷云科技RestCloud

数据同步 ETL

UML软件哪个好?10款好用的UML工具和画图软件推荐!

彭宏豪95

UML 在线白板 UML建模工具 绘图软件 绘图工具

数字孪生:助力机载软件构型管理

DevOps和数字孪生

数字孪生 机载软件

半导体即国家,日本做了啥?最大的 AI 模型并不十分透明;特斯拉安全数据报告缺失近一年丨 RTE 开发者日报 Vol.70

声网

选择低代码开发的理由

树上有只程序猿

软件开发 低代码 传统开发

国内仅有的两个“代码生成型”低代码平台之对比

编程之成住坏空

低代码 无代码 代码生成 代码自动生成 代码生成器

复杂业务逻辑的判断与优化

ZA技术社区

大数据 科技 保险科技 众安保险 ZA技术社区

文心一言 VS 讯飞星火 VS chatgpt (116)-- 算法导论10.3 1题

福大大架构师每日一题

福大大架构师每日一题

软件研发降本增效:寻求高效研发团队还是选择软件外包?

飞算JavaAI开发助手

软件开发 软件定制

PHP-FFMpeg 操作音视频

江户川码农

php 音视频 ffmpeg 经验总结

斯坦福发布 最新 GPT 模型排行榜 AlpacaEval【AI工具免费使用】

袁袁袁袁满

大模型 GPT AI绘画 ChatGPT

大模型 | Red Teaming, 无法忽视的关键一环

澳鹏Appen

人工智能 ChatGPT 生成式AI 红蓝对抗 red team

基于奇点云DataSimba,规划并新建数据生产域的实践

极客天地

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