我是rust的新手,并尝试通过以下示例读取Win10上的dir:https://rust-lang-nursery.github.io/rust-cookbook/file/dir.html
但是由于返回结果,代码无法编译,需要两个类型的参数:std :: io :: Errorstd :: time :: SystemTimeError
use std::fs;
fn main() -> Result<()> {
let current_dir = "C:/temp/";
println!(
"Entries modified in the last 24 hours in {:?}:",
current_dir
);
for entry in fs::read_dir(current_dir)? {
let entry = entry?;
let path = entry.path();
let metadata = fs::metadata(&path)?;
let last_modified = metadata.modified()?.elapsed()?.as_secs();
if last_modified < 24 * 3600 && metadata.is_file() {
println!(
"Last modified: {:?} seconds, is read only: {:?}, size: {:?} bytes, filename: {:?}",
last_modified,
metadata.permissions().readonly(),
metadata.len(),
path.file_name().ok_or("No filename")?
);
}
}
Ok(())
}
[请帮助,这是游乐场链接:https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=3af53ffa4d1cc6ae4c774f36514dd657
如果您单击代码段右上角的“扩展”按钮,则会看到默认情况下隐藏了某些位:
use error_chain::error_chain;
use std::{env, fs};
error_chain! {
foreign_links {
Io(std::io::Error);
SystemTimeError(std::time::SystemTimeError);
}
}
fn main() -> Result<()> {
// ...
这些位非常相关,因为默认情况下为error_chain! automatically generates a Result
alias,您只需要指定“ Ok”参数,另一个是生成的错误类型(类似于Result
,它是std::io::Result
的typedef)。