这有效:
format!("{:?}", error))
// Os { code: 13, kind: PermissionDenied, message: "Permission denied" }
Run Code Online (Sandbox Code Playgroud)
但我只想要message字段,而不是完整的调试打印。我如何得到它?
error.message // unknown field
error.message() // no method named `message` found for type `std::io::Error` in the current scope
Run Code Online (Sandbox Code Playgroud)
我认为没有什么能让你完全“权限被拒绝”。我所知道的最接近的是 的Display实现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
}
Run Code Online (Sandbox Code Playgroud)
如果这合适,您可以使用error.to_string().
标准库从 中获取此字符串sys::os,该字符串根据平台进行定义。例如,在类 UNIX 平台上,它使用strerror_r. 但是,此功能似乎并未以任何公开方式公开。
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |