#![forbid(unsafe_code)]
#![warn(missing_docs)]
use core::fmt;
pub type Result<T> = core::result::Result<T, PrikkError>;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum PrikkError {
CanonicalEncoding(String),
InvalidObjectId(String),
InvalidSignature(String),
InvalidName(String),
ObjectTypeMismatch {
expected: String,
actual: String,
},
UnsupportedFormatVersion(u32),
MalformedData(String),
Integrity(String),
LockConflict(String),
UnsupportedObjectType(String),
Io(String),
}
impl fmt::Display for PrikkError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::CanonicalEncoding(msg) => write!(f, "canonical encoding error: {msg}"),
Self::InvalidObjectId(msg) => write!(f, "invalid object id: {msg}"),
Self::InvalidSignature(msg) => write!(f, "invalid signature: {msg}"),
Self::InvalidName(msg) => write!(f, "invalid name: {msg}"),
Self::ObjectTypeMismatch { expected, actual } => {
write!(f, "object type mismatch: expected {expected}, got {actual}")
}
Self::UnsupportedFormatVersion(version) => {
write!(f, "unsupported format version: {version}")
}
Self::MalformedData(msg) => write!(f, "malformed persisted data: {msg}"),
Self::Integrity(msg) => write!(f, "integrity error: {msg}"),
Self::LockConflict(msg) => write!(f, "lock conflict: {msg}"),
Self::UnsupportedObjectType(msg) => write!(f, "unsupported object type: {msg}"),
Self::Io(msg) => write!(f, "i/o error: {msg}"),
}
}
}
impl std::error::Error for PrikkError {}
impl From<std::io::Error> for PrikkError {
fn from(value: std::io::Error) -> Self {
Self::Io(value.to_string())
}
}