#filter #word #string #censor #wordfilter

无 std 构建 word_filter_codegen

编译时生成 WordFilter 的实用工具

4 个版本 (2 个破坏性更新)

0.7.0 2021 年 8 月 1 日
0.6.0 2021 年 6 月 23 日
0.5.1 2021 年 5 月 28 日
0.5.0 2021 年 5 月 28 日

#508 in 构建工具

MIT/Apache

41KB
682

word_filter_codegen

GitHub Workflow Status codecov.io crates.io docs.rs MSRV License

生成 Word 过滤器的工具。

此crate旨在用作word_filter crate的构建工具。它使用 WordFilterGenerator 在编译时生成 WordFilter

示例

例如,可以使用以下方式生成一个简单的 WordFilter

首先,将 word_filterword_filter_codegen crate 分别添加到 Cargo.toml 文件的 [dependencies][build-dependencies] 列表中。确保它们的版本匹配。

[dependencies]
word_filter = "0.6.0"

[build-dependencies]
word_filter_codegen = "0.6.0"

然后,在 build.rs 文件中生成 WordFilter

use std::{
    env,
    fs::File,
    io::{BufWriter, Write},
    path::Path,
};
use word_filter_codegen::{Visibility, WordFilterGenerator};

fn main() {
    let path = Path::new(&env::var("OUT_DIR").unwrap()).join("codegen.rs");
    let mut file = BufWriter::new(File::create(&path).unwrap());

    writeln!(
        &mut file,
        "{}",
        WordFilterGenerator::new()
            .visibility(Visibility::Pub)
            .word("foo")
            .generate("FILTER")
        );
}

最后,将生成的代码包含到 lib.rs 文件中。

include!(concat!(env!("OUT_DIR"), "/codegen.rs"));

assert!(FILTER.censor("Should censor foo."), "Should censor ***.");

最低支持的 Rust 版本

此crate保证在稳定版的 rustc 1.51.0 及更高版本上编译。

许可证

此项目可在以下任一许可证下使用:

任选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在内的任何贡献,将按照上述方式双许可,不附加任何额外条款或条件。

依赖项

~1.5MB
~26K SLoC