< 返回版块

github.com/shanliu/lsys 发表于 2023-03-23 16:50

//有没办法实现以下 com_add 跟 com_show
mod a;//当引入 a 时 添加 ddd1 
mod b;//当引入 b 时 添加 ddd2
fn main(){
    println!(com_show!());//打印出ddd1 跟 ddd2
}
//a.rs
com_add!("ddd1");
//b.rs
com_add!("ddd2");

评论区

写评论
viruscamp 2023-03-24 11:11

rust 没有 init.py 和 js module 类似的动态载入模块初始化。
mod 内的 static 变量初始化只能调用 const fn , 应该不能满足你的需求。因为你的这个宏应该是注册用的,不太可能是静态行为。
https://github.com/mmastrac/rust-ctor 大概可以实现你目的,区别仅在 rust-ctor 是针对 crate 而不是 mod 的。

Easonzero 2023-03-23 16:59

可以试试inventory

1 共 2 条评论, 1 页