1use failure::Fail;
2
3use prettyprint::PrettyPrintError;
4use std::io::Error as IoError;
5use std::string::FromUtf8Error;
6
7#[derive(Debug, Fail)]
8pub enum InspectError {
10 #[fail(display = "{}", _0)]
12 Io(#[fail(cause)] IoError),
13 #[fail(display = "{}", _0)]
15 Rustc(String),
16 #[fail(display = "{}", _0)]
18 Utf8(#[fail(cause)] FromUtf8Error),
19 #[fail(display = "{}", _0)]
21 Rustfmt(String),
22 #[fail(display = "{}", _0)]
24 PrettyPrint(String),
25 #[fail(display = "{}", _0)]
27 Flowgraph(String),
28 #[fail(display = "{}", _0)]
30 DotExec(#[fail(cause)] IoError),
31 #[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}