teamy-mft 0.7.0

TeamDman's Master File Table CLI and library for NTFS.
#[derive(Debug, Clone, Copy, PartialEq, Eq, vox::facet::Facet)]
#[repr(u8)]
pub enum MachineErrorKind {
    Unavailable,
    Degraded,
    RequestInvalid,
}

#[derive(Debug, Clone, PartialEq, Eq, vox::facet::Facet)]
pub struct MachineError {
    pub kind: MachineErrorKind,
    pub message: String,
}

impl std::fmt::Display for MachineError {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", self.message)
    }
}

impl std::error::Error for MachineError {}

impl MachineError {
    #[must_use]
    pub fn unavailable(message: impl Into<String>) -> Self {
        Self {
            kind: MachineErrorKind::Unavailable,
            message: message.into(),
        }
    }

    #[must_use]
    pub fn degraded(message: impl Into<String>) -> Self {
        Self {
            kind: MachineErrorKind::Degraded,
            message: message.into(),
        }
    }

    #[must_use]
    pub fn request_invalid(message: impl Into<String>) -> Self {
        Self {
            kind: MachineErrorKind::RequestInvalid,
            message: message.into(),
        }
    }
}