2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

怎样做分布式数据一致性优化?YashanDB实现策略分享

数据库砖家

YashanDB数据库安全策略规划与配置

数据库砖家

大模型给产品研发带来的生产力提升有哪些?

思码逸研发效能

研发效能 研发效能度量 智能编程 AI编程 思码逸

AI智能体开发的需求整理

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI技术应用

求职必备!常用拖Offer话术总结

王磊

怎样做海量数据归档管理?选择YashanDB的理由详解

数据库砖家

跨集群搜索在安全应用中的配置指南

qife122

机器学习 跨集群搜索

基于华为开发者空间-云开发环境,部署Jupyter Notebook

华为云开发者联盟

Jupyter Notebook AI+ 华为开发者空间

从VMware到国产超融合:解析企业虚拟化转型的必经之路

智驱前线

vmware 国产超融合

怎样做高效查询优化,提升YashanDB性能表现?

数据库砖家

大数据-67 Kafka 分区分配策略详解与实战:Range、RoundRobin、Sticky 全面解析

武子康

Java 大数据 kafka 分布式 消息队列

1688店铺订单API秘籍!轻松获取订单列表订单详情订单物流数据

tbapi

1688订单接口 1688店铺订单接口 1688店铺订单详情接口 1688店铺订单列表接口

怎样搭建适合大规模企业的YashanDB系统架构

数据库砖家

基于开发者空间,实现仓颉 – C跨语言编程控制台小游戏

华为云开发者联盟

云主机 仓颉 华为开发者空间

AI智能体的开发周期

北京木奇移动技术有限公司

AI智能体 AI技术开发 软件外包公司

构建基于YashanDB数据库的分布式事务管理系统技术分析

数据库砖家

Cookie、Session、Token、JWT 是什么?万字图解带你一次搞懂!看完这篇,你连老奶奶都能教

左诗右码

Awesome Vite.js - 精选Vite.js资源大全

qife122

vite 脚手架

1688图片搜索API秘籍!轻松获取相似商品数据

tbapi

1688API 1688图片搜索接口 1688拍立淘接口 1688图片api 1688以图搜索接口

解决观看刺眼问题的舒适型LED显示屏

Dylan

广告 广告业 LED LED display LED屏幕

AI智能体的技术方案

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI技术应用

怎样做调优YashanDB数据库参数提升查询性能?

数据库砖家

怎样构建高效安全的YashanDB数据库访问控制?

数据库砖家

Amazon Q Developer 结合 MCP 实现智能化云成本分析

亚马逊云科技 (Amazon Web Services)

基于开发者空间OpenGauss数据库SMP并行技术的实现与应用

华为云开发者联盟

opengauss 华为开发者空间

怎样做定期优化YashanDB数据库性能的实用方法?

数据库砖家

可扩展文本转语音框架实现多模型协同

qife122

系统架构 文本转语音

使用Jekyll Bootstrap快速构建静态博客

qife122

ruby 静态站点

本地Linux环境连接管理开发者空间 - 云开发环境

华为云开发者联盟

云原生集成开发环境 Linux、 华为开发者空间

移动端动态化范式重构:技术演进驱动生态中枢崛起

xuyinyin

vivo Pulsar 万亿级消息处理实践(4)-Ansible运维部署

vivo互联网技术

大数据 pulsar 自动化运维 分布式消息中间件 消息处理

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