oxyroot 0.1.25

Another attempt to make library reading and writing of `.root` binary files which are commonly used in particle physics
Documentation
pub type Result<T> = core::result::Result<T, Error>;

#[derive(Debug)]
pub enum Error {
    TryFromSlice,
    Io(std::io::Error),
    FileHasAnIncorrectHeaderLength,
    CantReadDirectoryInfo {
        n_bytes_name_read: i32,
        n_bytes_name_min_allowed: i32,
        n_bytes_name_max_allowed: i32,
    },
    CantDecodeNameCycle(String),
    Rbytes(crate::rbytes::Error),
    KeyNotInFile {
        key: String,
        file: String,
    },
    CantLoadKeyPayload(String),
    ObjectNotInDirectory(String),

    DirectoryNegativeSeekKeys(i64),
    CantReadAmountOfBytesFromFile {
        requested: usize,
        read: usize,
    },
    InvalidPointerToStreamerInfo {
        seek: i64,
        min_allowed: i64,
        max_allowed: i64,
    },
    RCompress(crate::rcompress::Error),
    RTypes(crate::rtypes::error::Error),
    Rdict(crate::rdict::Error),
    FileIsOpenedWriteOnly,
    FileIsOpenedReadOnly,
    FileIsNotOpened,
    // Writer Errors
    NameContainsSlash(String),
    KeyClassMismatch {
        key: String,
        key_class: String,
        obj_class: String,
    },
}

impl std::fmt::Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        write!(f, "IO/Root Error: {:?}", self)
    }
}

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

impl From<crate::rbytes::Error> for Error {
    fn from(e: crate::rbytes::Error) -> Self {
        Error::Rbytes(e)
    }
}

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

impl From<crate::rcompress::Error> for Error {
    fn from(e: crate::rcompress::Error) -> Self {
        Error::RCompress(e)
    }
}

impl From<crate::rtypes::Error> for Error {
    fn from(e: crate::rtypes::Error) -> Self {
        Error::RTypes(e)
    }
}

impl From<crate::rdict::Error> for Error {
    fn from(e: crate::rdict::Error) -> Self {
        Error::Rdict(e)
    }
}

impl From<std::array::TryFromSliceError> for Error {
    fn from(_: std::array::TryFromSliceError) -> Self {
        Error::TryFromSlice
    }
}