写点什么

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

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

关注

评论

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

怎样在 10k 个 H100 GPU 上训练模型?

Baihai IDP

程序员 AI gpu LLMs Baihai IDP

【转载】把大模型做实 把供应链做透: 京东推出言犀大模型

京东科技开发者

【玩转金融素材生成】探索交互式AIGC组合素材生成技术

京东科技开发者

taobao.item_get_desc API返回值中的促销信息与活动标签探究

代码忍者

API 接口 pinduoduo API

RTE2024:聚焦Gen AI 时代的 RTE,声网发布 RTE+AI 能力全景图

ToB行业头条

融云IM信息托管服务,用户资料、好友关系、群组信息全覆盖

融云 RongCloud

AI Market全球首创“反向期权”——引领智能金融新时代,重塑全球交易格局!

科技热闻

CDN节点的作用及加速原理解析

HUODUNYUN

CDN CDN加速 CDN技术 CDN带宽

物资管理系统(源码+文档+部署+讲解)

深圳亥时科技

数字身份发展趋势前瞻:零信任

芯盾时代

数字身份 iam 零信任 统一身份管理平台

Microsoft Office LTSC 2024 Mac版安装包 附破解工具

Rose

Spring 应用合并之路(一):摸石头过河

京东科技开发者

Apache Calcite System Catalog 实现探究

端小强

Calcite

酒店管理系统(源码+文档+部署+讲解)

深圳亥时科技

降本60% ,阿里云 EMR StarRocks 全新发布存算分离版本

阿里云大数据AI技术

大数据 Serverless StarRocks 弹性伸缩 EMR

大势所趋,数字化转型是企业活下去的必选项

禅道项目管理

团队管理 数字化转型 企业管理 项目管理软件 数字化转型咨询

Parallels Desktop 19 for Mac(PD19虚拟机)一键激活版

Rose

文档管理系统

深圳亥时科技

NPM 包开发与优化全面指南

沉浸式趣谈

npm package.json

克拉玛依等保测评机构有哪些?电话多少?

行云管家

网络安全 等保 等保测评

如何让Nginx更安全?

江南一点雨

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