当我用问号传播错误时,我发现不同类型的错误工作正常,代码如下:
struct Car {
brand: String
}
impl From<String> for Car {
fn from(brand: String) -> Self {
Car { brand }
}
}
fn bar() -> Result<Car, String> {
Err(String::from("xxxx"))
}
fn f() -> Result<Car,Car> {
let c= bar()?;
Ok(Car::from(String::from("xxx")))
}
但当直接返回不同类型的错误时,如以下代码所示:
struct Car {
brand: String
}
impl From<String> for Car {
fn from(brand: String) -> Self {
Car { brand }
}
}
fn bar() -> Result<Car,String> {
Err(String::from("xxxx"))
}
fn f() -> Result<Car,Car> {
Err(String::from("xxx"))
}
编译器抱怨返回类型不匹配.直接返回和问号有什么不同?是否会应用带有问号的隐式类型转换?谢谢!