aboutsummaryrefslogblamecommitdiffstats
path: root/src/error.rs
blob: 96c709ce21d95f7c92e61e5caa34382d287eb712 (plain) (tree)
1
2
3
4
5
6
7
8


                                              




                              






                                                   












                                        





                                           
use std::{num::ParseIntError, str::Utf8Error};

use crate::element::{Name, Namespace};

pub enum Error {
    ReadError(std::io::Error),
    Utf8Error(Utf8Error),
    ParseError(String),
    EntityProcessError(String),
    // TODO: better choice for failures than string
    InvalidCharRef(String),
    DuplicateNameSpace(Namespace),
    DuplicateAttribute(String),
    UnqualifiedNamespace(String),
    MismatchedEndTag(String, String),
}

impl From<std::io::Error> for Error {
    fn from(e: std::io::Error) -> Self {
        Self::ReadError(e)
    }
}

impl From<Utf8Error> for Error {
    fn from(e: Utf8Error) -> Self {
        Self::Utf8Error(e)
    }
}

impl From<ParseIntError> for Error {
    fn from(e: ParseIntError) -> Self {
        Self::InvalidCharRef(e.to_string())
    }
}