写点什么

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

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

关注

评论

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

自主研发不断突破!索信达AI技术再获国家发明专利授权

索信达控股

PingCAP 与阿里云达成合作 云数据库 TiDB 上线阿里云心选商城

极客天地

Windows/Linux系统下python的安装与环境配置

左手の明天

Python Python库安装 python安装

解决方案| 快对讲综合调度系统

anyRTC开发者

音视频 快对讲 语音对讲 调度系统 视频对讲

墨天轮访谈 | 叶金荣:GreatSQL开源社区——做中国广受欢迎的开源数据库

墨天轮

数据库 开源数据库 国产数据库

摆脱五彩斑斓的黑,成为七彩程序员!

禅道项目管理

InfoQ 极客传媒 15 周年庆征文 | 跨系统数据一致性问题

架构精进之路

数据一致性 构架 InfoQ极客传媒15周年庆

PingCAP 与阿里云达成合作 云数据库 TiDB 上线阿里云心选商城

PingCAP

分布式数据库 TiDB

ABAP BDC常见问题-FICO

桥下本有油菜花

abap

Vone观点说|用DAO打造人类协作新形态

旺链科技

区块链 产业区块链 自组织协作

安全服务厂商安全狗加入龙蜥社区

OpenAnolis小助手

开源 网络安全 龙蜥社区 龙腾计划 安全狗

大数据培训Flink 运行架构

@零度

flink 大数据开发

华为云发布新伙伴体系,携手伙伴及开发者共建新生态,共创新价值

郝俸🦁好棒

华为云 生态

java培训MyBatis动态SQL

@零度

mybatis JAVA开发

得物质量度量之“三级指标体系”及其应用实践

得物技术

质量保障 指标监控 工程效能 质量指标 效能平台

基于宽表的数据建模应用

百度Geek说

大数据 数据建模

现场办公VS居家办公——我的2022居家办公经验分享| 社区征文

No Silver Bullet

经验分享 居家办公 6月月更 初夏征文

2022年中国露营市场专题洞察

易观分析

露营

一个 Angular 程序员两年多的远程办公经验分享 | 社区征文

汪子熙

程序员 远程办公 Slack 6月月更 初夏征文

【直播回顾】Hello HarmonyOS系列应用篇完美收官!

HarmonyOS开发者

HarmonyOS

InfoQ 极客传媒 15 周年庆征文|【Docker最佳实践】Windows上安装Docker及常见问题解决

迷彩

Docker 架构 运维 6月月更 InfoQ极客传媒15周年庆

开源等于免费吗?

源字节1号

开源

支持 M3U8 格式播放的方法

CRMEB

NFT链游系统开发|NFT卡牌盲盒游戏

薇電13242772558

NFT 链游

四次蝉联中国容器云市场TOP5!为应用赋能

BoCloud博云

云原生 容器技术 容器云 博云

OpenHarmony 官网文档有哪些上新?下篇:设备开发文档上新

OpenHarmony开发者

Open Harmony

有了钉钉和企业微信,企业还需要专属IM吗?

BeeWorks

用 Golang 重写 rsync(3):C里面的谜之指针

百家饭隐私计算平台创业者

c

Vue-11-条件渲染

Python研究所

6月月更

详解Cache缓存与DB数据库一致性

分治实践

数据一致性 缓存Redis

十分钟带汝入门大数据开发语言Scala

百思不得小赵

scala 大数据 6月月更

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