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

                                              
                                                          
 
                



                              


                                                   
                                                        

                                 
                                 
                         
                      
                                





                                      












                                        





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

use crate::element::{Content, Name, NamespaceDeclaration};

#[derive(Debug)]
pub enum Error {
    ReadError(std::io::Error),
    Utf8Error(Utf8Error),
    ParseError(String),
    EntityProcessError(String),
    // TODO: better choice for failures than string
    InvalidCharRef(String),
    DuplicateNameSpaceDeclaration(NamespaceDeclaration),
    DuplicateAttribute(String),
    UnqualifiedNamespace(String),
    MismatchedEndTag(Name, Name),
    NotInElement(String),
    ExtraData(String),
    UndeclaredNamespace(String),
    IncorrectName(Name),
    UnexpectedAttribute(Name),
    DeserializeError(String),
    UnexpectedNumberOfContents(usize),
    UnexpectedContent(Content),
    UnexpectedElement(Name),
}

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())
    }
}