use core::fmt;
#[derive(Debug)]
#[non_exhaustive]
pub enum Error {
InvalidFlake,
ParseError {
input: String,
reason: String,
},
InvalidTimestamp(u64),
InvalidRandom,
UuidError(String),
ConversionError(String),
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Error::InvalidFlake => write!(f, "Invalid Timeflake: value out of valid range"),
Error::ParseError { input, reason } => {
write!(f, "Failed to parse '{}' as Timeflake: {}", input, reason)
}
Error::InvalidTimestamp(ts) => {
write!(f, "Invalid timestamp: {} exceeds maximum allowed value", ts)
}
Error::InvalidRandom => {
write!(f, "Invalid random component: exceeds maximum allowed value")
}
Error::UuidError(msg) => write!(f, "UUID error: {}", msg),
Error::ConversionError(msg) => write!(f, "Conversion error: {}", msg),
}
}
}
pub type Result<T> = core::result::Result<T, Error>;