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}