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
use std::{
io::Write,
path::{Path, PathBuf},
time::Instant,
};
pub fn iterate_directory(path: &Path) -> impl Iterator<Item = PathBuf> {
walkdir::WalkDir::new(path)
.into_iter()
.map(::std::result::Result::unwrap)
.filter(|entry| {
entry.file_type().is_file()
&& entry
.file_name()
.to_str()
.map_or(false, |s| !s.starts_with('.')) })
.map(|entry| entry.path().to_path_buf())
}
pub fn time_it<F>(msg: &str, mut f: F)
where
F: FnMut(),
{
let now = Instant::now();
print!("{} ... ", msg);
let _ = std::io::stdout().flush();
f();
println!("(took {:.3}s)", now.elapsed().as_secs_f64());
}