这有效:
format!("{:?}", error))
// Os { code: 13, kind: PermissionDenied, message: "Permission denied" }
但我只想要message
字段,而不是完整的调试打印。我怎么得到它?
error.message // unknown field
error.message() // no method named `message` found for type `std::io::Error` in the current scope
答案 0 :(得分:3)
我认为没有什么东西会让你准确到达"许可被拒绝"。我所知道的最近的是Display
的{{1}}实现,它仍包含基础错误代码:
Error
如果这是合适的,您可以使用use std::fs::File;
use std::error::Error;
fn main() {
let error = File::open("/does-not-exist").unwrap_err();
println!("{:?}", error);
// Error { repr: Os { code: 2, message: "No such file or directory" } }
println!("{}", error);
// No such file or directory (os error 2)
println!("{}", error.description());
// entity not found
}
。
标准库从error.to_string()
获取此字符串,该字符串根据平台进行定义。例如,on UNIX-like platforms, it uses strerror_r
。但是,此功能似乎没有以任何公开方式公开。