cargo_inspect/
errors.rs

1use failure::Fail;
2
3use prettyprint::PrettyPrintError;
4use std::io::Error as IoError;
5use std::string::FromUtf8Error;
6
7#[derive(Debug, Fail)]
8/// Custom type for inspection errors
9pub enum InspectError {
10    /// Error during I/O handling
11    #[fail(display = "{}", _0)]
12    Io(#[fail(cause)] IoError),
13    /// Error when invoking rustc
14    #[fail(display = "{}", _0)]
15    Rustc(String),
16    /// Error when converting data to UTF8
17    #[fail(display = "{}", _0)]
18    Utf8(#[fail(cause)] FromUtf8Error),
19    /// Error while invoking rustfmt
20    #[fail(display = "{}", _0)]
21    Rustfmt(String),
22    /// Error while invoking prettyprint
23    #[fail(display = "{}", _0)]
24    PrettyPrint(String),
25    /// Error while trying to generate a flowgraph
26    #[fail(display = "{}", _0)]
27    Flowgraph(String),
28    /// Error invoking `dot`
29    #[fail(display = "{}", _0)]
30    DotExec(#[fail(cause)] IoError),
31    /// Other error
32    #[fail(display = "{}", _0)]
33    Generic(String),
34}
35
36impl From<IoError> for InspectError {
37    fn from(e: IoError) -> Self {
38        InspectError::Io(e)
39    }
40}
41
42impl From<FromUtf8Error> for InspectError {
43    fn from(e: FromUtf8Error) -> Self {
44        InspectError::Utf8(e)
45    }
46}
47
48impl From<String> for InspectError {
49    fn from(e: String) -> Self {
50        InspectError::Generic(e)
51    }
52}
53
54impl From<PrettyPrintError> for InspectError {
55    fn from(e: PrettyPrintError) -> Self {
56        InspectError::PrettyPrint(e.description().to_string())
57    }
58}