#directory #source-file #module #pull #no-alloc #automatic #regression

无std automod

将目录中的每个源文件作为一个模块引入

21个版本 (稳定)

1.0.14 2024年1月2日
1.0.13 2023年10月19日
1.0.12 2023年7月21日
1.0.8 2023年3月18日
0.1.1 2019年2月28日

#148 in 文件系统

Download history 3075/week @ 2024-03-31 3546/week @ 2024-04-07 3720/week @ 2024-04-14 4134/week @ 2024-04-21 3799/week @ 2024-04-28 3623/week @ 2024-05-05 3821/week @ 2024-05-12 4070/week @ 2024-05-19 5431/week @ 2024-05-26 6361/week @ 2024-06-02 6485/week @ 2024-06-09 6618/week @ 2024-06-16 7334/week @ 2024-06-23 6161/week @ 2024-06-30 11630/week @ 2024-07-07 12450/week @ 2024-07-14

每月下载量 38,280
141 个Crate中 使用 (33直接)

MIT/Apache

10KB
120 代码行

Automod

github crates.io docs.rs build status

将目录中的每个源文件作为一个模块引入。

[dependencies]
automod = "1.0"

语法

automod::dir!("path/to/directory");

此宏扩展为一个或多个 mod 项目,每个项目对应于指定目录中的每个源文件。

路径是相对于包含Cargo.toml的目录给出的。

如果给定目录不包含源文件,则这是一个错误。

宏接受一个可选的可视性,以应用于生成的模块: automod::dir!(pub "path/to/directory")

示例

假设我们想要保留一个用于个别编号问题的回归测试目录

  • tests/
    • regression/
      • issue1.rs
      • issue2.rs
      • ...
      • issue128.rs

我们希望能够将文件放入此目录并自动测试它们,而无需在某个显式的模块列表中列出它们。Automod通过添加包含以下内容的tests/regression.rs来解决此问题:

mod regression {
    automod::dir!("tests/regression");
}

宏调用展开为

mod issue1;
mod issue2;
/* ... */
mod issue128;

许可

根据您的选择,此代码在Apache License, Version 2.0MIT license下获得许可。
除非您明确声明,否则您提交给此crate的任何有意贡献,根据Apache-2.0许可证定义,应按照上述双重许可进行,而无需任何附加条款或条件。

依赖项

~0.3–0.8MB
~19K SLoC