10 个版本
0.1.10 | 2024年6月30日 |
---|---|
0.1.9 | 2024年6月29日 |
#77 在 Cargo 插件
298 每月下载量
29KB
463 行
cargofeature-aspect
一个在 Cargo 工作区中创建和更新功能方面的 Cargo 插件。
安装
只需使用 cargo
命令并执行 cargo install cargo-feature-aspect
即可。
详细信息
功能方面是一种通常应该存在于所有依赖于某个共享 crate 的工作区中的 crate 的功能。这个共享 crate 的功能将被传播到所有依赖者。
例如,如果假设有一个名为 logging
的 crate 有一个名为 enable-tracing
的功能,所有依赖于 logging
的 crate 可能都想有自己的 enable-tracing
功能,该功能在本地 crate 中启用额外的跟踪功能,并在所有依赖 crate 上启用 enable-tracing
功能。换句话说,我们希望直接依赖于 logging
的 crate 有一个类似的功能
[package]
name = "foo"
[dependencies]
logging = "..."
[features]
enable-tracing = ["logging/enable-tracing"]
...并且二次依赖者将获得一个匹配的功能,该功能将此功能向下传播
[package]
name = "bar"
[dependencies]
foo = "..."
[features]
enable-tracing = ["foo/enable-tracing"]
此命令在 crate 图中创建和更新此类功能方面。
示例用法
# Any crate that indirectly depends on the `logging` crate should have a feature
# `enable-tracing` that is propagated through all dependency crates.
cargo feature-aspect --name enable-tracing --leaf-feature logging/enable-tracing
# Same as above, but `--name` is inferred from `--leaf-feature`.
cargo feature-aspect --leaf-feature logging/enable-tracing
# Any such crate should also enable the `logging` optional dependency.
cargo feature-aspect --leaf-feature logging/enable-tracing --add-feature-param dep:logging
# Do not re-order the `enable-tracing` feature param array when it is not already in
# alphabetical order.
cargo feature-aspect --leaf-feature logging/enable-tracing --no-sort
# Dry-run to see what changes would be made
cargo feature-aspect --leaf-feature logging/enable-tracing --dry-run
# Verify that the feature aspect is up-to-date (useful for CI)
cargo feature-aspect --leaf-feature logging/enable-tracing --verify
归属
此 crate 中的一些代码是从 cargo-edit
复制的,其版权为 (c) 2015 Without Boats, Pascal Hertleif。
依赖
~11–21MB
~285K SLoC