error.rs

 1// Copyright (c) 2017 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
 2//
 3// This Source Code Form is subject to the terms of the Mozilla Public
 4// License, v. 2.0. If a copy of the MPL was not distributed with this
 5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
 6
 7use std::convert::From;
 8use std::io;
 9use std::num;
10
11use base64;
12use minidom;
13use jid;
14
15#[derive(Debug)]
16pub enum Error {
17    ParseError(&'static str),
18    IoError(io::Error),
19    XMLError(minidom::Error),
20    Base64Error(base64::DecodeError),
21    ParseIntError(num::ParseIntError),
22    JidParseError(jid::JidParseError),
23}
24
25impl From<io::Error> for Error {
26    fn from(err: io::Error) -> Error {
27        Error::IoError(err)
28    }
29}
30
31impl From<minidom::Error> for Error {
32    fn from(err: minidom::Error) -> Error {
33        Error::XMLError(err)
34    }
35}
36
37impl From<base64::DecodeError> for Error {
38    fn from(err: base64::DecodeError) -> Error {
39        Error::Base64Error(err)
40    }
41}
42
43impl From<num::ParseIntError> for Error {
44    fn from(err: num::ParseIntError) -> Error {
45        Error::ParseIntError(err)
46    }
47}
48
49impl From<jid::JidParseError> for Error {
50    fn from(err: jid::JidParseError) -> Error {
51        Error::JidParseError(err)
52    }
53}