17 releases (11 stable)

2.0.0-beta2 Feb 26, 2025
2.0.0-beta1 Nov 23, 2024
1.5.1 Jun 24, 2024
1.4.0 Nov 16, 2023
0.4.0 Nov 2, 2021

#228 in Internationalization (i18n)

Download history 1074606/week @ 2024-12-17 686231/week @ 2024-12-24 869862/week @ 2024-12-31 1351448/week @ 2025-01-07 1411432/week @ 2025-01-14 1425021/week @ 2025-01-21 1506754/week @ 2025-01-28 1664195/week @ 2025-02-04 1655805/week @ 2025-02-11 1997393/week @ 2025-02-18 2331352/week @ 2025-02-25 2524369/week @ 2025-03-04 2554115/week @ 2025-03-11 3054207/week @ 2025-03-18 2749261/week @ 2025-03-25 2503473/week @ 2025-04-01

11,311,108 downloads per month
Used in 31,588 crates (27 directly)

Unicode-3.0

2MB
30K SLoC

icu_properties crates.io

Definitions of Unicode Properties and APIs for retrieving property data in an appropriate data structure.

This module is published as its own crate (icu_properties) and as part of the icu crate. See the latter for more details on the ICU4X project.

APIs that return a CodePointSetData exist for binary properties and certain enumerated properties.

APIs that return a CodePointMapData exist for certain enumerated properties.

Examples

Property data as CodePointSetDatas

use icu::properties::{CodePointSetData, CodePointMapData};
use icu::properties::props::{GeneralCategory, Emoji};

// A binary property as a `CodePointSetData`

assert!(CodePointSetData::new::<Emoji>().contains('🎃')); // U+1F383 JACK-O-LANTERN
assert!(!CodePointSetData::new::<Emoji>().contains('')); // U+6728

// An individual enumerated property value as a `CodePointSetData`

let line_sep_data = CodePointMapData::<GeneralCategory>::new()
    .get_set_for_value(GeneralCategory::LineSeparator);
let line_sep = line_sep_data.as_borrowed();

assert!(line_sep.contains('\u{2028}'));
assert!(!line_sep.contains('\u{2029}'));

Property data as CodePointMapDatas

use icu::properties::CodePointMapData;
use icu::properties::props::Script;

assert_eq!(CodePointMapData::<Script>::new().get('🎃'), Script::Common); // U+1F383 JACK-O-LANTERN
assert_eq!(CodePointMapData::<Script>::new().get(''), Script::Han); // U+6728

More Information

For more information on development, authorship, contributing etc. please visit ICU4X home page.

Dependencies

~0.7–1.4MB
~27K SLoC