dris-build

Crates.iodris-build
lib.rsdris-build
version0.1.1
created_at2026-01-16 06:42:26.412618+00
updated_at2026-01-21 09:38:49.578501+00
descriptiondris 的 build.rs 侧代码生成器(扫描 #[component]/#[constructor] 并生成容器代码)
homepage
repositoryhttps://github.com/wuhaiji/dris
max_upload_size
id2048021
size257,932
wuhaiji (wuhaiji)

documentation

https://docs.rs/dris-build

README

dris-build

dris-builddris 的 build.rs 侧代码生成器:在编译期扫描组件与构造函数,生成 ContainerOUT_DIR/dris_gen.rs

用法

生成代码会引用 dris_rt::All/dris_rt::Type 等路径(直接依赖 dris-rt 即可):

[dependencies]
dris-rt = "0.1.1"

[build-dependencies]
dris-build = "0.1.1"

build.rs

fn main() {
    dris_build::generate().unwrap();
}

在你的 crate 里引入生成文件:

include!(concat!(env!("OUT_DIR"), "/dris_gen.rs"));

然后就可以:

let container = dris_gen::Container::build();

扫描范围

  • 扫描当前 crate 的 #[component]/#[constructor]
  • 会尝试递归扫描依赖(path 依赖与 registry 依赖),以支持跨 crate 的组件组合。
  • 不做 cfg 条件裁剪(会解析 src/**/*.rs),因此当前版本不支持cfg/cfg_attr 作用域里声明组件/构造函数(包括 #[cfg_attr(..., component/constructor)])。建议把 cfg 放在实现细节里,不要切换组件类型/构造函数本身。
Commit count: 19

cargo fmt