[][src]Crate mods

Simpler module declaration, brought to you by @NikolaiVazquez!

This library enables you to declare modules in ways the current syntax doesn't allow.


To declare multiple public modules, simply place pub before a module list:

This example is not tested
mods::mods! {
    pub puppy, kitty;

This works for all visibility modifiers:

This example is not tested
mods::mods! {
    pub a, b;        // Visible anywhere, even outside the module
    pub(crate) c, d; // Visible anywhere within the crate
    pub(super) e, f; // Visible to the parent module
    g, h;            // Visible to the current module

Without the mods! macro, the same code is much less succinct. This is what the macro expands out to:

This example is not tested
pub mod a;
pub mod b;
pub(crate) mod c;
pub(crate) mod d;
pub(super) mod e;
pub(super) mod f;
mod g;
mod h;


This crate is available on crates.io and can be used by adding the following to your project's Cargo.toml:

mods = "1.0.0"

Minimum Supported Rust Version (MSRV)

This library requires Rust 1.9.0 as the minimum version and will work with all subsequent versions.

This is because previous versions can't have mod x; declarations within submodules When testing this we get an error complaining that the module file is not inside the directory "src".

Rust 2015

If you're not using Rust 2018, add this to your crate root (main.rs or lib.rs):

This example is not tested
extern crate mods;

You can then use the macro directly from anywhere:

This example is not tested
mods! {
    pub puppy, kitty;

Wishful Thinking

It would be wonderful if we could instead have:

This example is not tested
pub mod puppy, kitty;

Or a syntax that matches use imports:

This example is not tested
pub mod {puppy, kitty};


See CHANGELOG.md for an exhaustive list of what has changed from one version to another.


This project is released under either:


This project is made freely available (as in free beer), but unfortunately not all beer is free! So, if you would like to buy me a beer (or coffee or more), then consider supporting my work that's benefited your project and thousands of others.

Become a Patron! Buy me a coffee



Declares modules simply.