阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

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

关注

评论

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

引爆用户参与:消息重弹,让您的推送不再被忽略

MobTech袤博科技

前端 智能投放 Androdi 智能推送

IT办公云化:云桌面解决方案是大势所趋

青椒云云电脑

云桌面

如何部署教育云终端

青椒云云电脑

云终端

规范预算编制,打造企业全面预算管理新章程

智达方通

企业全面预算管理 预算管理 预算编制 全面用预算管理 预算预测

实信达:基于鲲鹏DevKit开发综合档案管理系统,档案管理更便捷

彭飞

公链app开发 公链系统开发

西安链酷科技

比特币数字货币 DAPP系统开发 公链开发

云桌面办公解决方案有哪些优势

青椒云云电脑

云桌面

适配器模式:如何让不兼容的接口变得兼容

越长大越悲伤

设计模式 适配器模式

英特尔锐炫显卡助力玩家高帧率畅玩《重生边缘》,尽享超清画质

E科讯

浪潮云参编的《数字政府网络安全合规性指引》正式发布

浪潮云

云安全

如何部署教育云终端

青椒云云电脑

云终端

低代码+AI:拖拉拽构建漂亮活动页面

码上跃见

AI 低代码 网页设计 AIGC 低代码前端

AI 编程助手 Amazon CodeWhisperer 使用(持续更新中)

亚马逊云科技 (Amazon Web Services)

人工智能 亚马逊云科技

Vue低代码 -- 走进低代码

互联网工科生

Vue 低代码

【原理篇】Supabase 权限模型 Part2

张文平

Serverless API sdk 权限控制 Supabase

释放开发人员生产力:“文档级”代码了解一下?

SoFlu软件机器人

代码质量 开发工具 开发人员

中国移动云能力中心:基于鲲鹏DevKit开发移动云云数据库,让数据并行访问更高效

彭飞

火山引擎边缘云助力智能科技赋予生活更多新意

火山引擎边缘云

对象存储 视频 边缘云

Paimon+StarRocks 湖仓一体数据分析方案

StarRocks

数据库 大数据 数据湖 湖仓一体

Presto 设计与实现(十四):SQL 查询过程总结

冰心的小屋

sql 数据湖 presto 设计与实现

Acrobat Pro DC 2023 for mac(专业PDF编辑软件)v2023.003.20244中文直装版

mac

windows Acrobat Pro DC 2023 苹果mac PDF编辑和管理软件

dapp开发的技术原理和框架 dapp技术开发

西安链酷科技

链游 链游开发 赛车链游

代码审查和合并请求:团队合作中的关键

这我可不懂

团队 代码审查

华为Mate60负一屏升级快捷服务 同程旅行、猫眼等入驻

最新动态

ARTS打卡第四周

穿过生命散发芬芳

ARTS 打卡计划

一文搞懂ThreadLocal原理

树上有只程序猿

多线程 ThreadLocal

HarmonyOS创新实训营深圳站收官,美图秀秀、邮储银行、中信银行等20余企业积极拥抱鸿蒙生态

最新动态

私有云是什么?有哪些优势?

青椒云云电脑

公有云 私有云 云桌面

云桌面好用吗? 选购云桌面前必看的产品对比

青椒云云电脑

云桌面

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