unic_locale_impl/parser/
errors.rs

1use std::error::Error;
2use std::fmt::{self, Display};
3use unic_langid_impl::parser::ParserError as LangIdParserError;
4
5#[derive(Debug, PartialEq)]
6pub enum ParserError {
7    InvalidLanguage,
8    InvalidSubtag,
9    InvalidExtension,
10    LangIdError(LangIdParserError),
11}
12
13impl From<LangIdParserError> for ParserError {
14    fn from(error: LangIdParserError) -> Self {
15        ParserError::LangIdError(error)
16    }
17}
18
19impl Error for ParserError {}
20
21impl Display for ParserError {
22    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
23        let value = match &self {
24            ParserError::InvalidLanguage => "The given language subtag is invalid",
25            ParserError::InvalidSubtag => "Invalid subtag",
26            ParserError::InvalidExtension => "Invalid extension",
27            ParserError::LangIdError(_) => "Language Identifier Parser Error",
28        };
29        f.write_str(value)
30    }
31}