use std::path::{Path, PathBuf}; pub(crate) fn list_rust_files(dir: &Path) -> Vec { let mut res = list_files(dir); res.retain(|it| { it.file_name().unwrap_or_default().to_str().unwrap_or_default().ends_with(".rs") }); res } pub(crate) fn list_files(dir: &Path) -> Vec { let mut res = Vec::new(); let mut work = vec![dir.to_path_buf()]; while let Some(dir) = work.pop() { for entry in dir.read_dir().unwrap() { let entry = entry.unwrap(); let file_type = entry.file_type().unwrap(); let path = entry.path(); let is_hidden = path.file_name().unwrap_or_default().to_str().unwrap_or_default().starts_with('.'); if !is_hidden { if file_type.is_dir() { work.push(path); } else if file_type.is_file() { res.push(path); } } } } res }