AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

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

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

关注

评论

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

线上GC故障:CMSGC太频繁,你知道这是什么鬼?

Java永远的神

程序员 性能优化 JVM java面试 GC

选择大数据培训学习技术之前有哪些准备

小谷哥

论文复现丨基于ModelArts实现Text2SQL

华为云开发者联盟

人工智能 华为云 12 月 PK 榜

端到端流程打通企业经脉

元年技术洞察

数字化转型 流程 趋势研究 PaaS平台 方舟平台

美团餐饮SaaS基于StarRocks构建商家数据中台的探索

StarRocks

数据分析 零售

GitHub标星120K+!最新23版Java岗面试攻略,涵盖28个技术栈!

程序知音

Java java面试 java编程 后端技术 Java面试八股文

【年度评选】让我们为即将过去的 2022 划上圆满的句号

InfoQ写作社区官方

热门活动

破解加密的LastPass数据库

神锁离线版

数据安全 密码 密码管理器 Lastpass 密码安全

AI技术实践 | 人脸核身在未成年人保护领域的实践应用

牵着蜗牛去散步

人工智能 腾讯云 腾讯 人脸识别 未成年保护

java培训学习后找不到工作的原因有哪些

小谷哥

MySQL 慢查询日志分析(Filebeat+Elasticsearch+DataEase)

搞大屏的小北

MySQL慢查询 MySQL日志分析 MySQL日志可视化

自学数据分析——数据分析方法和模型

搞大屏的小北

数据分析方法 自学数据分析

MySQL进阶:Innodb的RR到底有没有解决幻读?

程序员小毕

MySQL 数据库 程序员 后端 java面试

自学web前端开发能找到好工作吗?

小谷哥

技术分享| anyRTC复盘一起看球场景

anyRTC开发者

CDN RTC 实时音视频 直播连麦 AI降噪

华为应用市场公布2022年度榜单 原子化服务、车载应用首次上榜

最新动态

隐私集合求交(PSI)协议研究综述

京东科技开发者

安全 密码学 安全多方计算 隐私集合求交 不经意传输

重磅 | 九科信息受邀参加2022中国互联网大会“数字政府论坛”

九科Ninetech

融云 x OHLA:「社交+游戏」双轮驱动,逐鹿中东陌生人社交

融云 RongCloud

社交 融云

中美顶级AI首次对话 送给人类的忠告引发关注

硬科技星球

玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制

OpenHarmony开发者

OpenHarmony

火山引擎工具技术分享:用AI完成数据挖掘,零门槛完成SQL撰写

字节跳动数据平台

大数据 BI BI 分析工具 12 月 PK 榜

海量请求下的接口并发解决方案

Java全栈架构师

Java 数据库 面试 后端 架构师

web前端培训班怎么学习?

小谷哥

某车企用户数据泄露,新能源汽车信息安全问题不容忽视

行云管家

信息安全 企业 堡垒机

自学数据分析——重新认识数据分析

搞大屏的小北

数据分析 数据分析可视化

分布式系统关键路径延迟分析实践

百度Geek说

12 月 PK 榜 延时分析 关键路径 大型分布式系统延时优化

InfoQ 写作社区 2022 年度优质企业号评选正式开启!

InfoQ写作社区官方

热门活动

YonBuilder开发之后端函数

YonBuilder低代码开发平台

后端 数据 开发 扩展 软件研发

跨越速运运单分析系统入选2022中国数据智能最佳实践案例

StarRocks

数据分析 物流

大数据培训机构怎么选择

小谷哥

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