use super::error::Result;
pub type TokenId = u32;
pub trait Tokenizer: Send + Sync {
fn train(&mut self, corpus: &[&str]) -> Result<()>;
fn encode(&self, text: &str) -> Result<Vec<TokenId>>;
fn decode(&self, ids: &[TokenId]) -> Result<String>;
fn vocab_size(&self) -> usize;
fn is_trained(&self) -> bool;
fn id_to_token(&self, id: TokenId) -> Option<&str>;
fn token_to_id(&self, token: &str) -> Option<TokenId>;
}