为什么 Rust 中函数末尾的 Ok(()) 后没有分号?
Why no semicolon after Ok(()) at the end of a function in rust?
摘自 current_dir 文档的代码片段:
use std::env;
fn main() -> std::io::Result<()> {
let path = env::current_dir()?;
println!("The current directory is {}", path.display());
Ok(())
}
我注意到只有在Ok(())
后面加一个分号,程序does not compile才出现如下错误:
error[E0308]: mismatched types
expected enum `std::result::Result`, found `()`
这是为什么?
Rust returns 最后一个表达式的值。当你在Ok(())
后面加上分号时,最后的表达式就变成了一个语句,所以它返回语句的"value",这是一个缺少值,也称为unit
(称为“ ()").
这里也提出并回答了这个问题:Are semicolons optional in Rust?
Rust 文档中的表达式:https://doc.rust-lang.org/stable/rust-by-example/expression.html
摘自 current_dir 文档的代码片段:
use std::env;
fn main() -> std::io::Result<()> {
let path = env::current_dir()?;
println!("The current directory is {}", path.display());
Ok(())
}
我注意到只有在Ok(())
后面加一个分号,程序does not compile才出现如下错误:
error[E0308]: mismatched types
expected enum `std::result::Result`, found `()`
这是为什么?
Rust returns 最后一个表达式的值。当你在Ok(())
后面加上分号时,最后的表达式就变成了一个语句,所以它返回语句的"value",这是一个缺少值,也称为unit
(称为“ ()").
这里也提出并回答了这个问题:Are semicolons optional in Rust?
Rust 文档中的表达式:https://doc.rust-lang.org/stable/rust-by-example/expression.html