3 个不稳定版本
0.2.0 | 2020年7月13日 |
---|---|
0.1.1 | 2020年7月12日 |
0.1.0 | 2020年7月12日 |
#5 在 #依赖
27KB
477 行
Realia
此crate提供基于各种检查的条件编译宏。这些宏与 #[cfg(...)]
和 #[cfg_attr(...)]
类似。
Realia受到rustversion的启发,并在此基础上做了大量改进。
属性
主要
- 环境变量
#[realia::env("FOO")]
- 检查
FOO
环境变量是否存在。
- 检查
#[realia::env("FOO", "bar")]
- 检查
FOO
环境变量的值是否为bar
。
- 检查
- 可执行文件
#[realia::cmd("foo")]
- 检查是否在
PATH
环境变量中存在可执行文件foo
。
- 检查是否在
- 依赖(考虑特定目标,但不考虑可选依赖项)
#[realia::dep("your-crate", "foo")]
- 检查你的crate是否使用了
foo
crate的任何版本。
- 检查你的crate是否使用了
#[realia::dep("your-crate", "foo", "1.2.3")]
- 检查你的crate是否使用了恰好为1.2.3版本的
foo
crate。
- 检查你的crate是否使用了恰好为1.2.3版本的
#[realia::dep_since("your-crate", "foo", "1.2.3")]
- 检查你的crate是否使用了版本为1.2.3或更高版本的
foo
crate。
- 检查你的crate是否使用了版本为1.2.3或更高版本的
#[realia::dep_before("your-crate", "foo", "1.2.3")]
- 检查你的crate是否使用了版本在1.2.3之前的
foo
crate。
- 检查你的crate是否使用了版本在1.2.3之前的
#[realia::dep_from_registry("your-crate", "foo")]
- 检查你的crate是否从注册表中使用了
foo
crate(而不是作为git
或path
依赖)。这在有 发布回退 的情况下很有用。
- 检查你的crate是否从注册表中使用了
以上属性可以通过以下附加属性进行细化或增强
#[realia::not(env("FOO"))]
- 反转条件。
#[realia::any(env("FOO"), env("bar"))]
- 检查是否满足任一条件。
#[realia::all(env("FOO"), env("bar"))]
- 检查是否满足所有条件。
#[realia::attr(env("FOO"),some_attr)]
- 当条件满足时应用
#[some_attr]
。您也可以这样指定const
。
- 当条件满足时应用
在条件改变时触发构建
如果您使用 env
或 cmd
属性,您需要在项目中包含一个 build.rs
文件,其中包含您检查的任何环境变量。
fn main() {
// Necessary when using #[realia::env("FOO")]
println!("cargo:rerun-if-env-changed=FOO");
// Necessary when using #[realia::cmd(...)]
println!("cargo:rerun-if-env-changed=PATH");
}
依赖项
~3–12MB
~154K SLoC