mod and pub for code organization and visibility

Marcus Chen Jan 2026
1 tab
mod utils {
    pub fn helper() {
        println!("Helper function");
    }

    fn private_fn() {}
}

pub use utils::helper;

pub fn public_api() {
    helper();
}
1 file · rust Explain with highlit

Rust's module system uses mod to define modules and pub to control visibility. Modules can be inline (mod name { ... }) or in separate files (mod name; loads name.rs). By default, items are private; use pub to expose them. I organize code into modules by feature or layer (controllers, models, services). pub(crate) makes items public within the crate but private externally. For nested modules, use super::* or use crate::module::Item imports. The pub use re-export pattern creates a clean public API. Rust's module system enforces encapsulation and makes refactoring safer.