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 68 69 70 71 72 73 74 75
/*! Idiomatic types for locale identifiers. This crate provides a [`Locale`](locale/enum.Locale.html) enumeration, [`LocaleIdentifier`](id/trait.LocaleIdentifier.html) trait, and a [`LocaleString`](string/struct.LocaleString.html) structure are provided that may be used to parse and construct locale identifiers in a standards-conformant manner. ## Example ``` use locale_types::{LocaleIdentifier, LocaleString}; let locale = LocaleString::new("en".to_string()).unwrap() .with_territory("US".to_string()).unwrap() .with_code_set("UTF-8".to_string()).unwrap() .with_modifier("collation=pinyin;currency=CNY".to_string()).unwrap(); println!("{}", locale); ``` */ #![warn( missing_debug_implementations, missing_docs, unused_extern_crates, rust_2018_idioms )] #[macro_use] extern crate lazy_static; // ------------------------------------------------------------------------------------------------ // Public Types // ------------------------------------------------------------------------------------------------ /// Common error type for functions in this crate. #[derive(Debug, PartialEq)] pub enum LocaleError { /// The provided locale string was badly formatted InvalidLocaleString, /// The provided language code was not valid, or was unknown. InvalidLanguageCode, /// The provided territory code was not valid, or was unknown. InvalidTerritoryCode, /// The provided code set name was not valid, or was unknown. InvalidCodeSet, /// The provided modifier string was not valid, or was unknown. InvalidModifier, /// The provided locale was unknown UnknownLocale, /// Locale category not set/or supported UnsetCategory, /// Operating system could not set the specified locale OSError, /// The operation you tried to perform was not supported. Unsupported, } /// Common result type for functions in this crate. pub type LocaleResult<T> = Result<T, LocaleError>; // ------------------------------------------------------------------------------------------------ // Public Modules // ------------------------------------------------------------------------------------------------ pub mod id; pub use id::LocaleIdentifier; pub mod string; pub use string::LocaleString; pub mod locale; pub use locale::Locale;