AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

eKuiper 1.8.0发布:零代码实现图像/视频流的实时AI推理

EMQ映云科技

物联网 IoT 视频流 流式计算 企业号 2 月 PK 榜

快速开发光伏电站数字孪生运维系统——实践类

阿里云AIoT

阿里云 物联网 IoT

关于DataLeap中的Notebook,你想知道的都在这

字节跳动数据平台

数据库 大数据 数据治理 数据研发 企业号 2 月 PK 榜

如何从0开始搭建 Vue 组件库

京东科技开发者

npm UI vant Vue3 组件库

serverless与容器优缺点

天翼云开发者社区

serverles

从MVC到DDD转变过程中的一点碎碎念

为自己带盐

DDD CQRS

分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟

IoT Studio场景最佳实践——实践类

阿里云AIoT

阿里云 物联网 IoT

业务“兔”飞猛进,只因他们做对了这件事

华为云开发者联盟

数据库 华为云 企业号 2 月 PK 榜 华为云开发者联盟

VOP消息仓库演进之路|如何设计一个亿级企业消息平台

京东科技开发者

软件架构 平台 VOP 客户调用 消息仓库

了解医疗上云门道,尽在“共铸国云 红云行业思想汇”!

天翼云开发者社区

OpenYurt v1.2 亮点速览丨云边流量峰值相比原生 K8s 降低 90%

阿里巴巴云原生

阿里云 开源 容器 云原生 openyurt

接口测试的测试要点

Liam

测试 接口测试 接口测试软件

全网招募P图高手!阿里巴巴持续训练鉴假AI

阿里技术

人工智能

打造自主可控云网算力,天翼云为湖南数字经济发展注入新动能

天翼云开发者社区

火山引擎数智平台的这款产品,正在帮助APP提升用户活跃度

字节跳动数据平台

大数据 客户数据平台 客户 客户数据 企业号 2 月 PK 榜

F5 2022财年安全营收10亿美金 服务应用安全做了哪些事?

F5 Inc

移动应用 安全 应用安全

Teradata的离开,是国内ToB服务转变的信号

ToB行业头条

人工智能 LLM 革命前夜:一文读懂ChatGPT缘起的自然语言处理模型Transformer

阿里技术

人工智能 自然语言处理

C#/VB.NET 如何在不同工作簿之间复制单元格范围

在下毛毛雨

C# .net Excel 文档操作

如何在Excel中查找并高亮数据

Geek_249eec

C# .net Excel VB.NET

深度访谈 Eolink 高管|研发团队如何更好地进行 API 管理?

万事ONES

项目管理 软件研发 API管理

MQTT发布/订阅模式介绍

EMQ映云科技

物联网 IoT mqtt 客户端 企业号 2 月 PK 榜

git使用ssh

刘旭东

git SSH

天翼云联合国际咨询机构IDC发布《中国医疗云建设与应用白皮书》

天翼云开发者社区

Apipost正式发布《API行业白皮书》!

不想敲代码

API 白皮书 行业趋势 行业报告

PostgreSQL:内存结构

天翼云开发者社区

LED显示屏怎么翻新?

Dylan

LED LED显示屏 led显示屏厂家

创建MQTT连接时如何设置参数?

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 连接参数

接口调试时如何实现接口之间的数据传递?

不想敲代码

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