2个不稳定版本
0.2.0 | 2023年1月23日 |
---|---|
0.1.0 | 2023年1月23日 |
#726 in 过程宏
18KB
378 行
Mass Cfg Attr
这个自定义 derive 宏允许你将多个属性包装在同一个 #[cfg_attr(..., ...)]
例如,你可能正在使用另一个自定义 derive 来标记方法进行额外连接,但在测试运行时,这种额外连接将不起作用。为了解决这个问题,你不得不反复使用 cfg_attr
。这增加了额外的工作量,使代码更难阅读,并增加了额外的风险。 mass_cfg_attr
有助于缓解这些问题
没有 mass_cfg_attr:
#[derive(SomeAutoWirer)]
struct MyStruct;
#[cfg_attr(not(any(test, doctest)), auto_wire)]
impl MyStruct {
#[cfg_attr(not(any(test, doctest)), wire(options))]
fn func_one(self) {
// ...
}
#[cfg_attr(not(any(test, test)), wire(options))] // mistake the compiler won't see
fn func_two(self) {
// ...
}
#[cfg_attr(not(any(test, doctest)), wire(options))]
fn func_three(self) {
// ...
}
}
有 mass_cfg_attr
#[derive(SomeAutoWirer)]
struct MyStruct;
#[mass_cfg_attr(not(any(test, doctest)), [auto_wire, wire, wire_more])]
#[auto_wire]
impl MyStruct {
#[wire(options)]
fn func_one(self) {
// ...
}
#[wire(options)]
fn func_two(self) {
// ...
}
#[wire_more(options)]
fn func_three(self) {
// ...
}
}
依赖项
~280KB