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;
10use std::string;
11
12use base64;
13use minidom;
14use jid;
15
16#[derive(Debug)]
17pub enum Error {
18    ParseError(&'static str),
19    IoError(io::Error),
20    XMLError(minidom::Error),
21    Base64Error(base64::DecodeError),
22    ParseIntError(num::ParseIntError),
23    ParseStringError(string::ParseError),
24    JidParseError(jid::JidParseError),
25}
26
27impl From<io::Error> for Error {
28    fn from(err: io::Error) -> Error {
29        Error::IoError(err)
30    }
31}
32
33impl From<minidom::Error> for Error {
34    fn from(err: minidom::Error) -> Error {
35        Error::XMLError(err)
36    }
37}
38
39impl From<base64::DecodeError> for Error {
40    fn from(err: base64::DecodeError) -> Error {
41        Error::Base64Error(err)
42    }
43}
44
45impl From<num::ParseIntError> for Error {
46    fn from(err: num::ParseIntError) -> Error {
47        Error::ParseIntError(err)
48    }
49}
50
51impl From<string::ParseError> for Error {
52    fn from(err: string::ParseError) -> Error {
53        Error::ParseStringError(err)
54    }
55}
56
57impl From<jid::JidParseError> for Error {
58    fn from(err: jid::JidParseError) -> Error {
59        Error::JidParseError(err)
60    }
61}