opticaldiscs 0.15.0

Format-agnostic optical disc image reading and filesystem browsing (ISO, BIN/CUE, CHD)
//! Unified error type for the opticaldiscs library.

use thiserror::Error;

/// All errors that can be produced by this library.
#[derive(Debug, Error)]
pub enum OpticaldiscsError {
    #[error("IO error: {0}")]
    Io(#[from] std::io::Error),

    #[error("Parse error: {0}")]
    Parse(String),

    #[error("Unsupported format: {0}")]
    UnsupportedFormat(String),

    #[error("Unsupported filesystem")]
    UnsupportedFilesystem,

    #[error("Entry not found: {0}")]
    NotFound(String),

    #[error("Not a directory: {0}")]
    NotADirectory(String),

    #[error("Invalid data: {0}")]
    InvalidData(String),

    #[error("CHD error: {0}")]
    Chd(String),

    #[error("CUE error: {0}")]
    Cue(String),

    /// A container's track table holds no data track.
    ///
    /// Not raised for BIN/CUE, CloneCD or CHD: a pure CD-DA disc has no data
    /// track by definition, so those open as
    /// [`FilesystemType::None`](crate::FilesystemType::None) instead. See
    /// [`DiscImageInfo::is_audio_only`](crate::detect::DiscImageInfo::is_audio_only).
    #[error("No data track found")]
    NoDataTrack,
}

pub type Result<T> = std::result::Result<T, OpticaldiscsError>;