use alloc::string::String;
use core::error::Error;
use core::fmt;
#[non_exhaustive]
#[derive(Clone, PartialEq, Debug)]
pub enum InsertError {
Empty,
MissingSlash,
UnbalancedAngle,
EmptyParameter,
InvalidParameter {
name: String,
},
DuplicateParameter {
name: String,
},
TouchingParameters,
Conflict {
existing: String,
},
}
impl Error for InsertError {}
impl fmt::Display for InsertError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::Empty => write!(f, "empty template"),
Self::MissingSlash => write!(f, "missing leading slash"),
Self::UnbalancedAngle => write!(f, "unbalanced angle bracket"),
Self::EmptyParameter => write!(f, "empty parameter name"),
Self::InvalidParameter { name } => write!(f, "invalid parameter name `{name}`"),
Self::DuplicateParameter { name } => write!(f, "duplicate parameter name `{name}`"),
Self::TouchingParameters => {
write!(f, "parameters must be separated by a static character")
}
Self::Conflict { existing } => write!(f, "conflicts with `{existing}`"),
}
}
}