error.rs

 1//! Provides an `Error` for use in this crate.
 2
 3use std::io;
 4
 5use std::net::TcpStream;
 6
 7use openssl::ssl::HandshakeError;
 8use openssl::error::ErrorStack;
 9
10use xml::reader::Error as XmlError;
11use xml::writer::Error as EmitterError;
12
13use minidom::Error as MinidomError;
14
15/// An error which wraps a bunch of errors from different crates and the stdlib.
16#[derive(Debug)]
17pub enum Error {
18    XmlError(XmlError),
19    EmitterError(EmitterError),
20    IoError(io::Error),
21    HandshakeError(HandshakeError<TcpStream>),
22    OpenSslErrorStack(ErrorStack),
23    MinidomError(MinidomError),
24    StreamError,
25    EndOfDocument,
26}
27
28impl From<XmlError> for Error {
29    fn from(err: XmlError) -> Error {
30        Error::XmlError(err)
31    }
32}
33
34impl From<EmitterError> for Error {
35    fn from(err: EmitterError) -> Error {
36        Error::EmitterError(err)
37    }
38}
39
40impl From<io::Error> for Error {
41    fn from(err: io::Error) -> Error {
42        Error::IoError(err)
43    }
44}
45
46impl From<HandshakeError<TcpStream>> for Error {
47    fn from(err: HandshakeError<TcpStream>) -> Error {
48        Error::HandshakeError(err)
49    }
50}
51
52impl From<ErrorStack> for Error {
53    fn from(err: ErrorStack) -> Error {
54        Error::OpenSslErrorStack(err)
55    }
56}
57
58impl From<MinidomError> for Error {
59    fn from(err: MinidomError) -> Error {
60        Error::MinidomError(err)
61    }
62}