From fae108cb8db1e3a26e64b89c755819b9166884e8 Mon Sep 17 00:00:00 2001 From: acheronfail Date: Mon, 24 Apr 2023 06:55:28 +0930 Subject: [PATCH] Add support for discovering /mod.rs mods --- src/lib.rs | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 774dac8..dee6513 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -131,25 +131,30 @@ fn source_file_names>(dir: P) -> Result> { for entry in fs::read_dir(dir)? { let entry = entry?; - if !entry.file_type()?.is_file() { - continue; - } let file_name = entry.file_name(); if file_name == "mod.rs" || file_name == "lib.rs" || file_name == "main.rs" { continue; } - let path = Path::new(&file_name); - if path.extension() == Some(OsStr::new("rs")) { - match file_name.into_string() { - Ok(mut utf8) => { + let path = entry.path(); + let file_type = entry.file_type()?; + + let is_file_mod = file_type.is_file() && path.extension() == Some(OsStr::new("rs")); + let is_dir_mod = file_type.is_dir() && path.join("mod.rs").exists(); + if !(is_file_mod || is_dir_mod) { + continue; + } + + match file_name.into_string() { + Ok(mut utf8) => { + if is_file_mod { utf8.truncate(utf8.len() - ".rs".len()); - names.push(utf8); - } - Err(non_utf8) => { - failures.push(non_utf8); } + names.push(utf8); + } + Err(non_utf8) => { + failures.push(non_utf8); } } }