35 个版本 (21 个破坏性更新)
新增 0.23.0 | 2024 年 8 月 16 日 |
---|---|
0.22.0 | 2024 年 6 月 29 日 |
0.21.0 | 2024 年 5 月 31 日 |
0.17.0 | 2024 年 3 月 26 日 |
0.1.16 | 2022 年 7 月 19 日 |
590 在 开发工具 中排名
每月 3,272 次下载
在 93 个crate中使用(直接使用 9 个)
23KB
163 代码行
模块 :: mod_interface
模块化协议,统一模块接口并引入层。
基本用例
包含代码的库文件 inner.rs
pub( crate ) mod private
{
/// Routine of inner module.
pub fn inner_is() -> bool
{
true
}
}
//
mod_interface::mod_interface!
{
prelude use inner_is;
}
生成模块和命名空间的 主文件 main.rs
use mod_interface::mod_interface;
//
fn main()
{
assert_eq!( prelude::inner_is(), inner::prelude::inner_is() );
}
//
mod_interface::mod_interface!
{
/// Inner.
layer inner;
}
它生成代码
use mod_interface::mod_interface;
//
fn main()
{
assert_eq!( prelude::inner_is(), inner::prelude::inner_is() );
}
//
/// Inner.
pub mod inner
{
pub( crate ) mod private
{
/// Routine of inner module.
pub fn inner_is() -> bool { true }
}
/// Own namespace of the module.
pub mod own
{
pub use orphan::*;
}
pub use own::*;
/// Orphan namespace of the module.
pub mod orphan
{
pub use exposed::*;
}
/// Exposed namespace of the module.
pub mod exposed
{
pub use prelude::*;
}
/// Prelude to use essentials: `use my_module::prelude::*`.
pub mod prelude
{
pub use private::inner_is;
}
}
/// Own namespace of the module.
#[ allow( unused_imports ) ]
pub mod own
{
use super::*;
pub use orphan::*;
pub use super::inner::orphan::*;
}
pub use own::*;
/// Orphan namespace of the module.
#[ allow( unused_imports ) ]
pub mod orphan
{
use super::*;
pub use exposed::*;
}
/// Exposed namespace of the module.
#[ allow( unused_imports ) ]
pub mod exposed
{
use super::*;
pub use prelude::*;
pub use super::inner::exposed::*;
}
/// Prelude to use essentials: `use my_module::prelude::*`.
#[ allow( unused_imports ) ]
pub mod prelude
{
use super::*;
pub use super::inner::prelude::*;
}
调试
要调试模块接口,请在 mod_interface
宏中使用指令 #![ debug ]
。让我们更新示例的主文件
mod_interface::mod_interface!
{
#![ debug ]
/// Inner.
layer inner;
}
完整示例请见 示例目录。
将其添加到您的项目中
cargo add mod_interface
从仓库尝试
git clone https://github.com/Wandalen/wTools
cd wTools
cd examples/mod_interface_trivial
cargo run
从仓库尝试
git clone https://github.com/Wandalen/wTools
cd wTools
cd examples/mod_interface_trivial
cargo run
依赖项
~2.5MB
~49K SLoC