1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
error_chain! { // The type defined for this error. These are the conventional // and recommended names, but they can be arbitrarily chosen. // // It is also possible to leave this section out entirely, or // leave it empty, and these names will be used automatically. types { Error, ErrorKind, ResultExt, Result; } // Automatic conversions between this error chain and other // error types not defined by the `error_chain!`. These will be // wrapped in a new error with, in the first case, the // `ErrorKind::Fmt` variant. The description and cause will // forward to the description and cause of the original error. // // Optionally, some attributes can be added to a variant. // // This section can be empty. foreign_links { Fmt(::std::fmt::Error); Io(::std::io::Error); Serde(::serde_json::Error); } // Define additional `ErrorKind` variants. The syntax here is // the same as `quick_error!`, but the `from()` and `cause()` // syntax is not supported. errors { InvalidToolchainName(t: String) { description("invalid toolchain name") display("invalid toolchain name: '{}'", t) } } } #[derive(Debug, Clone, PartialEq)] pub struct IoErrorString(String); impl From<::std::io::Error> for IoErrorString { fn from(e: ::std::io::Error) -> IoErrorString { IoErrorString(format!("{}", e)) } }