【发布时间】:2020-03-08 17:56:18
【问题描述】:
取如下代码sn-p:
fn main() -> std::result::Result<(), std::io::Error> {
println!("Bonjour le Monde");
Ok(())
}
这是非常好的代码,但我想知道如果我将错误的类型更改为 std::error::Error: 会发生什么:
fn main() -> std::result::Result<(), std::error::Error> {
println!("Bonjour le Monde");
Ok(())
}
这已经不好了:
错误[E0277]:在编译时无法知道
(dyn std::error::Error + 'static)类型值的大小
我是这样解决的:
fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
println!("Bonjour le Monde");
Ok(())
}
那么为什么 main 函数需要 Box 处理标准错误,而不需要处理 io 错误?
【问题讨论】:
标签: error-handling compiler-errors rust