use std::fmt;
use super::ids::ProviderId;
#[derive(Debug, Clone)]
pub enum RouteError {
EmptyModel,
InvalidProvider(String),
AmbiguousModel(Vec<ProviderId>),
ForeignModelForDirectProvider {
provider: ProviderId,
model: String,
},
}
impl fmt::Display for RouteError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::EmptyModel => write!(f, "model selector was empty"),
Self::InvalidProvider(name) => write!(f, "invalid provider: {name}"),
Self::AmbiguousModel(providers) => {
let names: Vec<&str> = providers.iter().map(ProviderId::as_str).collect();
write!(
f,
"model matches multiple providers ({}); specify a provider",
names.join(", ")
)
}
Self::ForeignModelForDirectProvider { provider, model } => write!(
f,
"model {model:?} is not served by direct provider {}",
provider.as_str()
),
}
}
}
impl std::error::Error for RouteError {}