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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
// This file is part of ICU4X. For terms of use, please see the file // called LICENSE at the top level of the ICU4X source tree // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). use std::error::Error; use std::fmt::{self, Display}; /// List of parser errors that can be generated /// while parsing [`LanguageIdentifier`](crate::LanguageIdentifier), [`Locale`](crate::Locale), /// [`subtags`](crate::subtags) or [`extensions`](crate::extensions). #[derive(Debug, PartialEq)] pub enum ParserError { /// Invalid language subtag. /// /// # Examples /// /// ``` /// use std::str::FromStr; /// /// use icu::locid::subtags::Language; /// use icu::locid::ParserError; /// /// assert_eq!(Language::from_str("x2"), Err(ParserError::InvalidLanguage)); /// ``` InvalidLanguage, /// Invalid script, region or variant subtag. /// /// # Examples /// /// ``` /// use std::str::FromStr; /// /// use icu::locid::subtags::Region; /// use icu::locid::ParserError; /// /// assert_eq!(Region::from_str("#@2X"), Err(ParserError::InvalidSubtag)); /// ``` InvalidSubtag, /// Invalid extension subtag. /// /// # Examples /// /// ``` /// use std::str::FromStr; /// /// use icu::locid::extensions::unicode::Key; /// use icu::locid::ParserError; /// /// assert_eq!(Key::from_str("#@2X"), Err(ParserError::InvalidExtension)); /// ``` InvalidExtension, } impl Error for ParserError {} impl Display for ParserError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let value = match self { Self::InvalidLanguage => "The given language subtag is invalid", Self::InvalidSubtag => "Invalid subtag", Self::InvalidExtension => "Invalid extension", }; f.write_str(value) } }