use crate::types::{Sentence, Token};
pub trait Tokenizer {
type Error;
fn tokenize<'a>(&self, input: &'a str) -> Result<Vec<Token<'a>>, Self::Error>;
}
pub trait Normalizer {
fn normalize(&self, input: &str) -> String;
fn normalize_in_place(&self, input: &mut String);
}
pub trait Segmenter {
type Error;
fn segment<'a>(&self, input: &'a str) -> Result<Vec<Sentence<'a>>, Self::Error>;
}