1use std::fmt;
2use std::io;
3use std::path::PathBuf;
4
5#[derive(Debug)]
7pub enum Error {
8 Io(io::Error),
9 ParentDirContains(PathBuf),
10 RootDirContains(PathBuf),
11 OutDirNotFound,
12 InvalidPath(PathBuf),
13}
14
15pub type Result<T> = std::result::Result<T, Error>;
17
18impl From<io::Error> for Error {
19 fn from(error: io::Error) -> Self {
20 Error::Io(error)
21 }
22}
23
24impl fmt::Display for Error {
25 fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
26 use self::Error::*;
27
28 match self {
29 Io(e) => e.fmt(formatter),
30 ParentDirContains(p) => {
31 write!(formatter, "\"{}\" contains parent directory", p.display())
32 }
33 RootDirContains(p) => write!(formatter, "\"{}\" contains root directory", p.display()),
34 OutDirNotFound => write!(formatter, "OUT_DIR not found"),
35 InvalidPath(p) => write!(formatter, "Invalid path {}", p.display()),
36 }
37 }
38}