use alloc::string::String;
use core::fmt;
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum BuilderError {
MissingField(&'static str),
Invalid(String),
}
impl BuilderError {
pub fn missing_field(field: &'static str) -> Self {
Self::MissingField(field)
}
pub fn invalid(message: impl Into<String>) -> Self {
Self::Invalid(message.into())
}
pub fn field(&self) -> Option<&'static str> {
match self {
Self::MissingField(field) => Some(field),
Self::Invalid(_) => None,
}
}
}
impl fmt::Display for BuilderError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::MissingField(field) => write!(f, "required field `{field}` was not set"),
Self::Invalid(message) => write!(f, "soundness check failed: {message}"),
}
}
}
impl core::error::Error for BuilderError {}