HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

一文带你了解数仓智能运维框架

华为云开发者联盟

运维 GaussDB(DWS) 智能运维框架 调度框架 任务调度器

架构训练营 week10 课程总结

红莲疾风

「架构实战营」

百度手机助手存储资源优化实践

百度Geek说

后端 存储

java培训:SpringBoot技术的理解

@零度

JAVA开发 spring-boot

前端培训:Vue 面试题分享

@零度

Vue 前端开发

这样才是代码管理和 Commit 的正确姿势! | 研发效能提升36计

阿里云云效

阿里云 云原生 代码管理 研发 Commit

mark:Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

webrtc developer

可持续·向未来:碳中和背景下绿色冬奥发展新趋势

易观分析

碳中和 冬奥会 产业经济

【堡垒机】堡垒机的起源以及发展历史简单了解

行云管家

运维 网络安全 堡垒机 运维安全

Flink SQL 在快手的扩展和实践

Apache Flink

大数据 flink 实时计算 编程开发

有哪些创建线程的方法?推荐使用哪种?

王磊

java面试

Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序

华为云开发者联盟

Java 代码 java异常处理 语法 Exception

基于babel的埋点工具简单实现及思考

CRMEB

向工程腐化开炮 | proguard治理

阿里巴巴终端技术

Java App 客户端开发 proguard 腐化治理

运维与微服务结合?深度解析微服务框架Tars整体解决方案

云智慧AIOps社区

DevOps 微服务 运维 云原生 TARS

固态存储行业领导者硅格半导体加入龙蜥社区,共同推动开源生态建设

OpenAnolis小助手

Linux 开源 社群运营

读书笔记:查理芒格的思维模型

panda

微信朋友圈的高性能复杂度分析

阿卷

架构实战营

iofsstat:帮你轻松定位 IO 突高,前因后果一目了然 | 龙蜥技术

OpenAnolis小助手

开源 技术分享 工具集 进程管理

再见丑陋的 SwaggerUI,这款开源的API文档生成神器界面更炫酷,逼格更高!

沉默王二

Java

架构实战营毕业总结

红莲疾风

「架构实战营」

第九节:SpringBoot在线文档Swagger2入门

入门小站

springboot

人人都是 Serverless 架构师之“盲盒抽奖”创意营销活动实践

Serverless Devs

Serverless 架构 2月月更

云运维必备知识-云运维定义以及工作内容讲解

行云管家

云计算 IT运维 云运维

在Rainbond中实现数据库结构自动化升级

北京好雨科技有限公司

在线字节转换工具

入门小站

工具

代码评审|阿里巴巴DevOps实践指南

阿里云云效

阿里云 DevOps 云原生 代码管理 代码评审

小程序开发中使用网络请求

Speedoooo

如何低成本测试云原生(K8s)应用?

Draven Gorden

微服务 云原生 联调测试 并行测试

大数据培训:Hadoop生态系统圈

@零度

大数据 hadoop

新版DevOps Handbook (Part 1) 五个新增实践

Franklin 许峰

DevOps DevOps认证 Handbook DevOps实践指南 EXIN

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