//! Provides an `Error` for use in this crate. use std::io; use std::net::TcpStream; use openssl::ssl::HandshakeError; use openssl::error::ErrorStack; use xml::reader::Error as XmlError; use xml::writer::Error as EmitterError; use minidom::Error as MinidomError; use base64::Base64Error; use components::sasl_error::SaslError; /// An error which wraps a bunch of errors from different crates and the stdlib. #[derive(Debug)] pub enum Error { XmlError(XmlError), EmitterError(EmitterError), IoError(io::Error), HandshakeError(HandshakeError), OpenSslErrorStack(ErrorStack), MinidomError(MinidomError), Base64Error(Base64Error), SaslError(Option), XmppSaslError(SaslError), StreamError, EndOfDocument, } impl From for Error { fn from(err: XmlError) -> Error { Error::XmlError(err) } } impl From for Error { fn from(err: EmitterError) -> Error { Error::EmitterError(err) } } impl From for Error { fn from(err: io::Error) -> Error { Error::IoError(err) } } impl From> for Error { fn from(err: HandshakeError) -> Error { Error::HandshakeError(err) } } impl From for Error { fn from(err: ErrorStack) -> Error { Error::OpenSslErrorStack(err) } } impl From for Error { fn from(err: MinidomError) -> Error { Error::MinidomError(err) } } impl From for Error { fn from(err: Base64Error) -> Error { Error::Base64Error(err) } }