use serde::Serialize;
use std::fmt;
#[derive(Debug, Default, PartialEq, Serialize)]
pub struct FilterRuleDebugInfo {
pub raw_line: Option<String>,
pub source_location: Option<SourceLocation>,
}
impl fmt::Display for FilterRuleDebugInfo {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
if let Some(location) = &self.source_location {
write!(f, "{location}: ")
} else {
write!(f, "x:x: ")
}?;
if let Some(raw_line) = &self.raw_line {
write!(f, "{raw_line}")
} else {
write!(f, "! unknown")
}
}
}
#[derive(Debug, Default, PartialEq, Serialize)]
pub struct SourceLocation {
pub source_index: u32,
pub line_number: u32,
}
impl fmt::Display for SourceLocation {
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
write!(f, "{}:{}", self.source_index, self.line_number)
}
}