我见过这样的代码:
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
Err("March")?
}
以及:
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
Err("March".into())
}
但我真的不明白它们是怎么工作的.据我所知,?
的作用就像一个早期返回,当我们遇到错误时,它会立即返回.那我们为什么还需要Err("March")?
?为什么不只使用Err("March")
,因为它已经是该函数的最后一个表达式了?
Err("March".into())
对我来说更是令人费解."March".into()
返回什么,如果它已经返回错误,为什么我们需要再次将其包装在Err()
中?为什么这不会导致像Err(Err())
这样的奇怪类型?