#[macro_use] extern crate error_chain; pub mod inner { error_chain! {} } #[cfg(feature = "a_feature")] pub mod feature { error_chain! {} } error_chain! { // Types generated by the macro. If empty or absent, it defaults to // Error, ErrorKind, Result; types { // With custom names: MyError, MyErrorKind, MyResult; // Without the `Result` wrapper: // Error, ErrorKind; } // Automatic bindings to other error types generated by `error_chain!`. links { Inner(inner::Error, inner::ErrorKind); // Attributes can be added at the end of the declaration. Feature(feature::Error, feature::ErrorKind) #[cfg(feature = "a_feature")]; } // Bindings to types implementing std::error::Error. foreign_links { Io(::std::io::Error); } } fn main() {}