1 //! Error types that can be emitted from this library 2 3 use std::io; 4 5 use thiserror::Error; 6 7 /// Generic result type with ZipError as its error variant 8 pub type ZipResult<T> = Result<T, ZipError>; 9 10 /// The given password is wrong 11 #[derive(Error, Debug)] 12 #[error("invalid password for file in archive")] 13 pub struct InvalidPassword; 14 15 /// Error type for Zip 16 #[derive(Debug, Error)] 17 pub enum ZipError { 18 /// An Error caused by I/O 19 #[error(transparent)] 20 Io(#[from] io::Error), 21 22 /// This file is probably not a zip archive 23 #[error("invalid Zip archive")] 24 InvalidArchive(&'static str), 25 26 /// This archive is not supported 27 #[error("unsupported Zip archive")] 28 UnsupportedArchive(&'static str), 29 30 /// The requested file could not be found in the archive 31 #[error("specified file not found in archive")] 32 FileNotFound, 33 } 34 35 impl From<ZipError> for io::Error { from(err: ZipError) -> io::Error36 fn from(err: ZipError) -> io::Error { 37 io::Error::new(io::ErrorKind::Other, err) 38 } 39 } 40