Skip to main content

mod_idiom/
lib.rs

1//! `mod` and `use` idiom.
2//!
3//! *The author of this crate is not good at English.*  
4//! *Forgive me if the document is hard to read.*
5
6#![no_std]
7#![warn(missing_docs)]
8
9pub mod prelude;
10
11/// A macro combining `mod` and `use`.
12///
13/// # Examples
14///
15/// File `main.rs`
16///
17/// ```ignore
18/// mod util;
19///
20/// fn main() {
21///     my_func1();
22///     my_func2();
23///     my_func3();
24/// }
25/// ```
26///
27/// File `util/mod.rs`:
28///
29/// ```ignore
30/// # use mod_idiom::prelude::*;
31/// u!(pub mod my_items);
32/// ```
33///
34/// File `util/my_items.rs`:
35///
36/// ```ignore
37/// pub fn my_func1() {}
38/// pub fn my_func2() {}
39/// pub fn my_func3() {}
40/// ```
41#[macro_export]
42macro_rules! u {
43    ($vis:vis mod $module:ident) => {
44        mod $module;
45        $vis use $module::*;
46    };
47}