我见过这样的代码:
但是我真的不明白它们是如何工作的。据我所知,
对我来说,
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())
呢?
&'static str
,不是一个Box<dyn Error>
。 - undefined