把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

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

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

关注

评论

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

太厉害了,终于有人能把Android 事件分发机制讲的明明白白了!

android 程序员 移动开发

字节跳动上传了一份“面试官版Android面试小册”,不讲一句废话

android 程序员 移动开发

字节跳动抖音安卓客户端日常实习 3+1 面经(已 OC)

android 程序员 移动开发

FVM 切换VSCode 的Flutter版本

坚果

flutter 11月日更

字节跳动,华为,阿里巴巴,小米

android 程序员 移动开发

安卓开发教你如何自定义View并实现炫酷进度条

android 程序员 移动开发

天天给-App-抓包,还不懂-HTTP-代理吗?---实用-HTTP

android 程序员 移动开发

太恐怖了!移动开发APP-可视化埋点技术原理竟然是这样的?!

android 程序员 移动开发

如何在10分钟内让Android应用大小减少-60%?

android 程序员 移动开发

如何在Adapter中优雅的使用Context

android 程序员 移动开发

安卓移动软件开发:手机防火墙的实现

android 程序员 移动开发

官方推荐 Flow 取代 LiveData,有必要吗?

android 程序员 移动开发

实现长图片自动循环滚动效果

android 程序员 移动开发

如何在跳槽后,Android程序员摸鱼也能学习进阶,为下次换工作进大厂拿高薪!

android 程序员 移动开发

字节、腾讯2020高频Android面试题;JVM虚拟机原理深入解析(建议收藏

android 程序员 移动开发

字节跳动上千道精选面试题还不刷起来!2019-2020大厂高级面试题集合(Handler,性能优化

android 程序员 移动开发

字节跳动千万用户量级直播活动技术保障实践

android 程序员 移动开发

在这个问题上,能看出 Android 工程师的真实水平

android 程序员 移动开发

如何设计一个秒杀系统?

android 程序员 移动开发

字节码插桩--你也可以轻松掌握

android 程序员 移动开发

字节跳动面试官:我用这10个问题,淘汰了80%的Android面试者------

android 程序员 移动开发

安卓工具类之app获取版本渠道信息工具类

android 程序员 移动开发

大厂面试官:跳出舒适圈的程序员3年月薪还没到2万,干脆考虑转行?

android 程序员 移动开发

【死磕NIO】— NIO基础详解

chenssy

11月日更 死磕 Java 死磕 NIO

如何在AndroidStudio中使用手势解锁

android 程序员 移动开发

字节瞧不上大龄程序员,我开始慌了……

android 程序员 移动开发

字节跳动Android一面凉凉,竟以为一面是HR面---

android 程序员 移动开发

实战_Android后台启动Activity实践之路

android 程序员 移动开发

基于-Kotlin-+-Netty-实现一个简单的-TCP-自定义协议

android 程序员 移动开发

大家都说程序员是吃青春饭的、Android研发没前景,那等Android研发年纪大了又该怎么办?

android 程序员 移动开发

如何快速编写Markdown、博客文档(语法收藏)

android 程序员 移动开发

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