Pau*_*erg 4 rust semicolon-inference
取自current_dir文档的代码片段:
use std::env;
fn main() -> std::io::Result<()> {
let path = env::current_dir()?;
println!("The current directory is {}", path.display());
Ok(())
}
Run Code Online (Sandbox Code Playgroud)
我注意到只有在 之后添加分号Ok(()),程序才不会编译并出现以下错误:
error[E0308]: mismatched types
expected enum `std::result::Result`, found `()`
Run Code Online (Sandbox Code Playgroud)
这是为什么?
Rust 返回最后一个表达式的值。当您在 之后添加分号时Ok(()),最终的表达式就变成了一个语句,因此它返回了该语句的“值”,也就是缺少值,也称为unit(称为“()”)。
这里也提出并回答了这个问题:Rust 中的分号是可选的吗?
Rust 文档中的表达式:https : //doc.rust-lang.org/stable/rust-by-example/expression.html
| 归档时间: |
|
| 查看次数: |
180 次 |
| 最近记录: |