1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| use std::fs::{self, DirEntry, Metadata};
use std::io;
use std::path::Path;
use std::time::SystemTime;
#[allow(unused)]
#[derive(Debug)]
struct ExtendedDirEntry {
entry: DirEntry,
metadata: Metadata,
modified: SystemTime,
}
fn read_dir_and_sort_by_modified(path: &Path) -> io::Result<Vec<ExtendedDirEntry>> {
let mut result = fs::read_dir(path)?
.map(|entry| {
let entry = entry?;
let metadata = entry.metadata()?;
let modified = metadata.modified()?;
Ok(ExtendedDirEntry {
entry,
metadata,
modified,
})
})
.collect::<io::Result<Vec<ExtendedDirEntry>>>()?;
result.sort_by_key(|x| x.modified);
Ok(result)
}
fn main() -> io::Result<()> {
let extended_entries = read_dir_and_sort_by_modified(".".as_ref())?;
for extended_entry in &extended_entries {
println!("- {extended_entry:?}");
}
Ok(())
} |
Partager