icu_locale_core/extensions/private/
other.rs

1// This file is part of ICU4X. For terms of use, please see the file
2// called LICENSE at the top level of the ICU4X source tree
3// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
4
5impl_tinystr_subtag!(
6    /// A single item used in a list of [`Private`](super::Private) extensions.
7    ///
8    /// The subtag has to be an ASCII alphanumerical string no shorter than
9    /// one character and no longer than eight.
10    ///
11    /// # Examples
12    ///
13    /// ```
14    /// use icu::locale::extensions::private::Subtag;
15    ///
16    /// let subtag1: Subtag = "Foo".parse()
17    ///     .expect("Failed to parse a Subtag.");
18    ///
19    /// assert_eq!(subtag1.as_str(), "foo");
20    /// ```
21    ///
22    /// Notice: This is different from the generic [`Subtag`](crate::subtags::Subtag)
23    /// which is between two and eight characters.
24    ///
25    /// ```
26    /// use icu::locale::extensions::private;
27    /// use icu::locale::subtags;
28    ///
29    /// let subtag: Result<private::Subtag, _> = "f".parse();
30    /// assert!(subtag.is_ok());
31    ///
32    /// let subtag: Result<subtags::Subtag, _> = "f".parse();
33    /// assert!(subtag.is_err());
34    /// ```
35    Subtag,
36    extensions::private,
37    subtag,
38    extensions_private_subtag,
39    1..=8,
40    s,
41    s.is_ascii_alphanumeric(),
42    s.to_ascii_lowercase(),
43    s.is_ascii_alphanumeric() && s.is_ascii_lowercase(),
44    InvalidExtension,
45    ["foo12"],
46    ["toolooong"],
47);