Rust Modern Modules
Rule
Prefer Rust 2018+ module layout:
src/foo.rs
src/foo/bar.rs
Use this from src/foo.rs:
mod bar;
Do not create src/foo/mod.rs for new modules unless the repository already consistently uses mod.rs in that area or the user explicitly asks for it.
Workflow
- Inspect nearby Rust modules before creating files.
- If both layouts are viable, choose
foo.rsas the parent module andfoo/*.rsfor children. - If refactoring an existing
mod.rs, avoid moving it unless the user asked for a layout cleanup or the move is necessary for the task. - Keep module declarations private by default: use
mod child;first, then widen topub mod child;only when external access is needed. - Run
cargo fmtafter moving or creating Rust module files.
Examples
For a logging module with a daily appender, prefer:
src/logging.rs
src/logging/daily_file_appender.rs
Inside src/logging.rs:
mod daily_file_appender;
use daily_file_appender::DailyFileAppender;