为什么打印!函数在Rust中使用感叹号?

时间:2015-04-13 17:27:41

标签: rust

在Swift中,!表示打开可选(可能的值)。

1 个答案:

答案 0 :(得分:43)

println!不是函数,而是。宏使用!将它们与普通方法调用区分开来。 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)
}