4 releases (2 breaking)
0.7.0 | Aug 1, 2021 |
---|---|
0.6.0 | Jun 23, 2021 |
0.5.1 | May 28, 2021 |
0.5.0 | May 28, 2021 |
#731 in Build Utils
41KB
682 lines
word_filter_codegen
Tools for generating Word Filters.
This crate is intended to be used as a build utility for the
word_filter
crate. It is used to generate WordFilter
s
at compile-time using a WordFilterGenerator
.
Example
For example, a simple WordFilter
can be generated by the following.
First, add both the word_filter
and word_filter_codegen
crates to the Cargo.toml
[dependencies]
and [build-dependencies]
lists respectively. Be sure their versions match.
[dependencies]
word_filter = "0.6.0"
[build-dependencies]
word_filter_codegen = "0.6.0"
Next, generate the WordFilter
in the build.rs
file.
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")
);
}
And finally, include the generated code in the lib.rs
file.
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
assert!(FILTER.censor("Should censor foo."), "Should censor ***.");
Minimum Supported Rust Version
This crate is guaranteed to compile on stable rustc 1.51.0
and up.
License
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~1.5MB
~23K SLoC