extern crate miette; extern crate thiserror; use miette::Diagnostic; use thiserror::Error; #[derive(Error, Diagnostic, Debug)] pub enum ConverterError { #[error("error converting an value")] #[diagnostic(code(libnres::infallible))] Infallible(#[from] std::convert::Infallible), #[error("error converting an value")] #[diagnostic(code(libnres::try_from_int_error))] TryFromIntError(#[from] std::num::TryFromIntError), } #[derive(Error, Diagnostic, Debug)] pub enum ReaderError { #[error(transparent)] #[diagnostic(code(libnres::convert_error))] ConvertValue(#[from] ConverterError), #[error("incorrect header format")] #[diagnostic(code(libnres::list_type_error))] IncorrectHeader, #[error("incorrect file size (expected {expected:?} bytes, received {received:?} bytes)")] #[diagnostic(code(libnres::file_size_error))] IncorrectSizeFile { expected: u32, received: u32 }, #[error( "incorrect size of the file list (not a multiple of {expected:?}, received {received:?})" )] #[diagnostic(code(libnres::list_size_error))] IncorrectSizeList { expected: u32, received: u32 }, #[error("resource file reading error")] #[diagnostic(code(libnres::io_error))] ReadFile(#[from] std::io::Error), #[error("file is too small (must be at least {expected:?} bytes, received {received:?} byte)")] #[diagnostic(code(libnres::file_size_error))] SmallFile { expected: u32, received: u32 }, }