#编译 #保护 #失败 #功能 #标志 #属性 #条件

compilation-guard

当满足特定条件时强制编译失败

2次发布

0.1.1 2023年7月3日
0.1.0 2023年7月3日

#954 in 过程宏

Apache-2.0

6KB

编译保护

例如,你有一个位于几个不同功能保护后面的功能,你想要确保你的用户知道何时需要编译。

这个crate可以帮助你做到这一点。

例如。

#![allow(unused_imports, dead_code)]

use compilation_guard::compilation_guard;
#[cfg_attr(all(unstable, feature = "enable-macro"), derive(VeryExpensiveMacro))]
#[cfg_attr(all(not(unstable), feature = "enable-macro"), compilation_guard("lol"))]
struct A;

fn main() {

}

如果你没有启用不稳定标志,你会得到这个。

error: custom attribute panicked
 --> src/main.rs:5:58
  |
5 | #[cfg_attr(all(not(unstable), feature = "enable-macro"), compilation_guard("lol"))]
  |                                                          ^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = help: message: Compilation guard was triggered!
          lol

无运行时依赖