pixelmosh 4.2.2

PNG corrupter
Documentation
//! Errors

use std::{
    fmt::{self, Display},
    io, num,
};

/// It handles internal, I/O and formatter errors
#[non_exhaustive]
#[derive(Debug)]
pub enum MoshError {
    /// Data format is not supported.
    DecodingError(png::DecodingError),
    /// i.e. wrong data size/formatter failure.
    EncodingError(png::EncodingError),
    /// Image palette issue.
    InvalidPalette,
    /// I/O errors.
    IoError(io::Error),
    /// Out of range errors,
    ConversionError(num::TryFromIntError),
    /// Probability distribution errors.
    RngError(rand::distr::uniform::Error),
    /// Allocation failed.
    OutOfMemory,
}

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

impl Display for MoshError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Self::DecodingError(e) => Display::fmt(e, f),
            Self::EncodingError(e) => Display::fmt(e, f),
            Self::InvalidPalette => f.write_str("Invalid image palette"),
            Self::IoError(e) => Display::fmt(e, f),
            Self::ConversionError(e) => Display::fmt(e, f),
            Self::RngError(e) => Display::fmt(e, f),
            Self::OutOfMemory => f.write_str("Out of memory"),
        }
    }
}

impl From<io::Error> for MoshError {
    fn from(e: io::Error) -> Self {
        Self::IoError(e)
    }
}

impl From<num::TryFromIntError> for MoshError {
    fn from(e: num::TryFromIntError) -> Self {
        Self::ConversionError(e)
    }
}

impl From<png::DecodingError> for MoshError {
    fn from(e: png::DecodingError) -> Self {
        Self::DecodingError(e)
    }
}

impl From<png::EncodingError> for MoshError {
    fn from(e: png::EncodingError) -> Self {
        Self::EncodingError(e)
    }
}

impl From<rand::distr::uniform::Error> for MoshError {
    fn from(e: rand::distr::uniform::Error) -> Self {
        Self::RngError(e)
    }
}