pub trait DocumentParser: Send + Sync {
// Required methods
fn name(&self) -> &str;
fn supported_extensions(&self) -> &[&str];
fn parse(&self, path: &Path) -> Result<String>;
// Provided methods
fn signature(&self) -> String { ... }
fn parse_extracted(&self, path: &Path) -> Result<ExtractedDocument> { ... }
fn can_parse(&self, path: &Path) -> bool { ... }
fn max_file_size(&self) -> u64 { ... }
}