2 个不稳定版本
0.2.0 | 2022 年 8 月 4 日 |
---|---|
0.1.0 | 2022 年 2 月 24 日 |
#11 在 #implicit
7KB
81 代码行
Hypermod
automod 和 supermod 的更懒版本。递归搜索 src/ 目录中的 .rs 文件,然后使用目录名作为模块名构建模块树,这样我们就可以永远不再编写另一个 mod 语句了。这模仿了 Java 包命名空间,它们也映射到项目目录结构。
语法
在项目的主.rs 或 lib.rs 中: hypermod::hypermod!();
示例
假设以下项目目录结构
- my_rust_project/
- src/
- db/
- migrations/
- 01-migration/
- up.sql
- down.sql
- 01-migration/
- schema.rs
- migrations/
- model/
- bar.rs
- foo.rs
- baz.rs
- main.rs
- db/
- src/
main.rs 或 lib.rs 中对 hypermod!() 宏的调用扩展为以下 mod 语句和 use 语句
mod db {
mod schema;
pub use self::schema::*;
}
mod model {
mod bar;
pub use self::bar::*;
mod foo;
pub use self::foo::*;
}
mod baz;
pub use self::baz::*;
这使得开发者可以跳过编写 mod 语句,而是通过位于其中的子目录的名称来使用 Rust 源文件中的任何 pub 项目。例如
use crate::model::BarStruct;
use crate::db::schema_function;
许可证
本软件根据以下其中之一许可
- Apache 许可证 2.0 版 (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
根据 Apache-2.0 许可证定义,您有意提交的任何贡献,都将根据上述条款进行双许可,不附加任何额外条款或条件。
依赖项
~1.5MB
~35K SLoC