pub mod scanner;
pub mod store;
pub mod metrics;
#[cfg(test)]
mod tests_integration;
pub use scanner::{FseScanner, ScanSummary, ScanCursor, Violation};
pub use store::FseMap;
pub type RuleId = u32;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ControlOp {
ResetRuleState,
Mode(u32),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum FseOpcode {
Ignore,
Record(RuleId),
Reject(RuleId),
Control(ControlOp),
}
#[derive(Debug, Clone)]
pub struct Rule {
pub pattern: Vec<u8>,
pub opcode: FseOpcode,
}
impl Rule {
pub fn new<P: AsRef<[u8]>>(pattern: P, opcode: FseOpcode) -> Self {
Self {
pattern: pattern.as_ref().to_vec(),
opcode,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ScanResult {
Continue,
Rejected(RuleId),
}