use alloc::string::String;
use crate::{InitializationError, RegexError};
#[cfg(feature = "convert-sentencepiece")]
mod sentencepiece;
#[cfg(feature = "convert-sentencepiece")]
pub use sentencepiece::*;
#[cfg(feature = "convert-tiktoken")]
mod tiktoken;
#[cfg(feature = "convert-tiktoken")]
pub use tiktoken::*;
#[cfg(feature = "convert-tokenizers")]
mod tokenizers;
#[cfg(feature = "convert-tokenizers")]
pub use tokenizers::*;
#[cfg(feature = "convert-tekken")]
mod tekken;
#[cfg(feature = "convert-tekken")]
pub use tekken::*;
#[non_exhaustive]
#[derive(Debug, thiserror::Error)]
pub enum ConversionError {
#[error("invalid data: {0}")]
InvalidData(String),
#[error("unsupported configuration: {0}")]
UnsupportedConfiguration(String),
#[error("invalid regex: {0}")]
InvalidRegex(String),
#[error("{0}")]
InitializationError(InitializationError),
#[cfg(feature = "std")]
#[error("{0}")]
IOError(#[from] std::io::Error),
}
impl From<InitializationError> for ConversionError {
fn from(e: InitializationError) -> Self {
Self::InitializationError(e)
}
}
impl From<RegexError> for ConversionError {
fn from(e: RegexError) -> Self {
Self::InvalidRegex(e.0)
}
}