use std::io;
use std::str::Utf8Error;
use std::string::FromUtf8Error;
pub type Result<T> = ::std::result::Result<T, Error>;
#[derive(Debug, Fail)]
pub enum Error {
#[fail(display = "Error during execution of `cargo metadata`: {}", stderr)]
CargoMetadata {
stderr: String
},
#[fail(display = "{}", 0)]
Io(io::Error),
#[fail(display = "Cannot convert the stdout of `cargo metadata`: {}", 0)]
Utf8(Utf8Error),
#[fail(display = "Cannot convert the stderr of `cargo metadata`: {}", 0)]
ErrUtf8(FromUtf8Error),
#[fail(display = "Failed to interpret `cargo metadata`'s json: {}", 0)]
Json(::serde_json::Error)
}
impl From<io::Error> for Error {
fn from(v: io::Error) -> Self {
Error::Io(v)
}
}
impl From<Utf8Error> for Error {
fn from(v: Utf8Error) -> Self {
Error::Utf8(v)
}
}
impl From<FromUtf8Error> for Error {
fn from(v: FromUtf8Error) -> Self {
Error::ErrUtf8(v)
}
}
impl From<::serde_json::Error> for Error {
fn from(v: ::serde_json::Error) -> Self {
Error::Json(v)
}
}