#[derive(Debug)]
#[non_exhaustive]
pub enum FuseError {
Corrupt(String),
Version(u8),
Io(String),
InvalidArg(String),
Serialization(String),
}
impl std::fmt::Display for FuseError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Corrupt(m) => write!(f, "FuseCorruptError: {m}"),
Self::Version(v) => write!(f, "FuseVersionError: unsupported version {v}"),
Self::Io(m) => write!(f, "FuseIOError: {m}"),
Self::InvalidArg(m) => write!(f, "FuseError: {m}"),
Self::Serialization(m) => write!(f, "FuseSerializationError: {m}"),
}
}
}
impl std::error::Error for FuseError {}
impl From<std::io::Error> for FuseError {
fn from(e: std::io::Error) -> Self {
Self::Io(e.to_string())
}
}
#[cfg(feature = "msgpack")]
impl From<rmp_serde::encode::Error> for FuseError {
fn from(e: rmp_serde::encode::Error) -> Self {
Self::Serialization(format!("msgpack encode: {e}"))
}
}
#[cfg(feature = "msgpack")]
impl From<rmp_serde::decode::Error> for FuseError {
fn from(e: rmp_serde::decode::Error) -> Self {
Self::Serialization(format!("msgpack decode: {e}"))
}
}
pub type FuseResult<T> = Result<T, FuseError>;