1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
extern crate xml; use std::num::{ParseFloatError, ParseIntError}; #[derive(Debug)] pub enum Error { BoundsMissing(ErrorReason), MalformedTag(ErrorReason), MalformedNode(ErrorReason), MalformedWay(ErrorReason), MalformedRelation(ErrorReason), UnknownElement, XmlParseError(xml::reader::Error), } #[derive(Debug)] pub enum ErrorReason { ParseFloat(ParseFloatError), ParseInt(ParseIntError), IllegalNesting, Missing, } impl From<ParseFloatError> for ErrorReason { fn from(err: ParseFloatError) -> ErrorReason { ErrorReason::ParseFloat(err) } } impl From<ParseIntError> for ErrorReason { fn from(err: ParseIntError) -> ErrorReason { ErrorReason::ParseInt(err) } } impl From<xml::reader::Error> for Error { fn from(err: xml::reader::Error) -> Error { Error::XmlParseError(err) } }