1use rayon::prelude::*;
2use walkdir::WalkDir;
3
4pub fn walk_src_max_width(dir: &str, strip_prefix: &str) -> usize {
5 WalkDir::new(dir)
6 .into_iter()
7 .filter_map(|e| e.ok())
8 .filter(|e| e.path().extension().is_some_and(|ext| ext == "rs"))
9 .collect::<Vec<_>>()
10 .par_iter()
11 .map(|e| {
12 let display = e.path().to_string_lossy().replace('\\', "/");
13 display
14 .find(strip_prefix)
15 .map(|i| &display[i + strip_prefix.len()..])
16 .unwrap_or(&display)
17 .len()
18 })
19 .max()
20 .unwrap_or(16)
21 + 4
22}