2 个不稳定版本

0.2.0 2022 年 8 月 4 日
0.1.0 2022 年 2 月 24 日

#11#implicit

MIT/Apache

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
        • schema.rs
      • model/
        • bar.rs
        • foo.rs
      • baz.rs
      • main.rs

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 许可证定义,您有意提交的任何贡献,都将根据上述条款进行双许可,不附加任何额外条款或条件。

依赖项

~1.5MB
~35K SLoC