sensitive_rs/lib.rs
1//! # Sensitive-rs
2//!
3//! `sensitive-rs` is a Rust library for finding, validating, filtering, and replacing sensitive words.
4//! It provides efficient algorithms to handle sensitive words, suitable for various application scenarios.
5//!
6//! ## Features
7//!
8//! - **Multi-algorithm support**: Aho-Corasick, Wu-Manber and Regex
9//! - **Variant detection**: Handle pinyin and shape variants
10//! - **High performance**: Optimized for Chinese text processing
11//!
12//! ## Quick Start
13//!
14//! ```rust
15//! use sensitive_rs::Filter;
16//!
17//! let mut filter = Filter::new();
18//! filter.add_word("赌博");
19//! filter.add_word("色情");
20//!
21//! // Standard matching
22//! assert_eq!(filter.find_in("含有赌博内容"), (true, "赌博".to_string()));
23//!
24//! // Variant detection
25//! assert_eq!(filter.find_in("含有 dubo 内容"), (true, "赌博".to_string()));
26//! ```
27
28#![cfg_attr(not(feature = "std"), no_std)]
29// On `no_std` some engine/cache/variant surface is exercised only via the `std`
30// paths (or tests), so it reads as dead code there. Keep the `std` build fully linted.
31#![cfg_attr(not(feature = "std"), allow(dead_code, unused_mut))]
32
33extern crate alloc;
34
35mod engine;
36mod filter;
37#[cfg(feature = "std")]
38mod variant;
39#[cfg(feature = "wasm")]
40mod wasm;
41
42pub use engine::MatchAlgorithm;
43pub use engine::MultiPatternEngine;
44pub use filter::Filter;
45pub use filter::Match;
46#[cfg(feature = "std")]
47pub use variant::VariantDetector;
48
49/// Re-export for backward compatibility
50#[cfg(feature = "std")]
51pub use engine::wumanber::WuManber;
52
53#[cfg(feature = "wasm")]
54pub use wasm::WasmFilter;