use std::{io, str::Utf8Error, string::FromUtf8Error};
pub type Result<T, E = Error> = ::std::result::Result<T, E>;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("`cargo metadata` exited with an error: {stderr}")]
CargoMetadata {
stderr: String,
},
#[error("failed to start `cargo metadata`: {0}")]
Io(#[from] io::Error),
#[error("cannot convert the stdout of `cargo metadata`: {0}")]
Utf8(#[from] Utf8Error),
#[error("cannot convert the stderr of `cargo metadata`: {0}")]
ErrUtf8(#[from] FromUtf8Error),
#[error("failed to interpret `cargo metadata`'s json: {0}")]
Json(#[from] ::serde_json::Error),
#[error("could not find any json in the output of `cargo metadata`")]
NoJson,
}