println!
不是函数,而是macro.宏使用!
来区分它们与普通方法调用.The documentation包含更多信息.
另见:
Rust使用Option
类型表示可选数据.它有一个unwrap
方法.
Rust 1.13添加了问号运算符?
,作为try!
宏的模拟(最初通过RFC 243提出).
关于问号运算符的一个很好的解释是The Rust Programming Language.
fn foo() -> Result<i32, Error> {
Ok(4)
}
fn bar() -> Result<i32, Error> {
let a = foo()?;
Ok(a + 4)
}
问号运算符也是extends to Option
,因此您可能会看到它用于展开值或从函数返回None
.这与仅仅展开不同,因为程序不会死机:
fn foo() -> Option<i32> {
None
}
fn bar() -> Option<i32> {
let a = foo()?;
Some(a + 4)
}