1 use std::fmt; 2 3 pub type Result<T> = std::result::Result<T, Error>; 4 5 #[derive(Copy, Clone, Eq, PartialEq, Debug)] 6 pub enum Error { 7 BadAbsolutePath, 8 BadRelativePath, 9 CannotFindBinaryPath, 10 CannotGetCurrentDir, 11 CannotCanonicalize, 12 } 13 14 impl std::error::Error for Error {} 15 16 impl fmt::Display for Error { fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 18 match self { 19 Error::BadAbsolutePath => write!(f, "bad absolute path"), 20 Error::BadRelativePath => write!(f, "bad relative path"), 21 Error::CannotFindBinaryPath => write!(f, "cannot find binary path"), 22 Error::CannotGetCurrentDir => write!(f, "cannot get current directory"), 23 Error::CannotCanonicalize => write!(f, "cannot canonicalize path"), 24 } 25 } 26 } 27