1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
use git2::Error as GitErr; use std::{fmt, io::Error as IoErr}; #[derive(Debug)] pub enum Error { Git(GitErr), Url(String), Io(IoErr), } impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { Self::Git(e) => fmt::Display::fmt(&e, f), Self::Url(u) => f.write_str(&u), Self::Io(e) => fmt::Display::fmt(&e, f), } } } impl std::error::Error for Error { fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { match self { Self::Git(e) => Some(e), Self::Io(e) => Some(e), _ => None, } } } impl From<GitErr> for Error { fn from(e: GitErr) -> Self { Self::Git(e) } }