Rust 1.22将?操作符扩展到Option类型
为了简化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固化了下来。要了解详细信息,请查看发布说明。
相关推荐
zhangxiafll 2020-11-13
Justhavefun 2020-10-22
lousir 2020-10-21
longzhiwen 2020-10-16
svap 2020-11-09
viplinux 2020-10-28
Justhavefun 2020-09-25
归去来兮 2020-09-18
zhouxiaojie 2020-09-16
gamedevd 2020-09-04
tkernel 2020-09-03
Trustport 2020-09-01
svap 2020-08-25
tkernel 2020-08-18
lihn 2020-08-18
归去来兮 2020-07-28
TianlangStudio 2020-07-18
iammjun 2020-07-07
Colourful 2020-07-03