#[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() {}
