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:
rust
mods::mods! {
pub puppy, kitty;
}
This works for all visibility modifiers:
rust
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:
rust
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
]:
toml
[dependencies]
mods = "1.0.0"
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".
If you're not using [Rust 2018], add this to your crate root (main.rs
or
lib.rs
):
```rust
extern crate mods; ```
You can then use the macro directly from anywhere:
rust
mods! {
pub puppy, kitty;
}
It would be wonderful if we could instead have:
rust
pub mod puppy, kitty;
Or a syntax that matches use
imports:
rust
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: