#proc-macro #template #gate #module #features #docs #feature-gates

功能门

一个用于功能门控模块和类型的简单宏

2个版本

0.1.1 2023年5月29日
0.1.0 2023年5月29日

#1516过程宏

自定义许可证

8KB

简单的文档化的功能门

这个crate提供了feature_gatefeature_gate_ex宏,用于简单的#[cfg(feature = "...")]宏,这些宏在docs.rs上有良好的文档。

稳定Rust

请注意,为了在稳定Rust上正常工作,目前需要在Cargo.toml中添加以下内容(请参阅自定义构建的元数据

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

示例

feature_gate宏允许指定单个功能

use feature_gate::feature_gate;

#[feature_gate("test")]
struct FeatureGated;

#[test]
fn it_works() {
    let _ = FeatureGated {};
}

feature_gate_ex宏允许指定一组复杂的需求

use feature_gate::feature_gate_ex;

#[feature_gate_ex(any(test, feature = "test"))]
struct FeatureGated;

#[test]
fn it_works() {
    let _ = FeatureGated {};
}

lib.rs:

简单的文档化的功能门

这个crate提供了feature_gatefeature_gate_ex宏,用于简单的#[cfg(feature = "...")]宏,这些宏在docs.rs上有良好的文档。

稳定Rust

请注意,为了在稳定Rust上正常工作,目前需要在Cargo.toml中添加以下内容(请参阅自定义构建的元数据

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

示例

feature_gate宏允许指定单个功能

use feature_gate::feature_gate;

#[feature_gate("test")]
struct FeatureGated;

#[test]
fn it_works() {
    let _ = FeatureGated {};
}

feature_gate_ex宏允许指定一组复杂的需求

use feature_gate::feature_gate_ex;

#[feature_gate_ex(any(test, feature = "test"))]
struct FeatureGated;

#[test]
fn it_works() {
    let _ = FeatureGated {};
}

依赖项

~300–750KB
~18K SLoC