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