Unicode Normalization forms according to UAX#15 rules
198
stars
215
commits
Rust
primary language
Nov 3, 2025
updated
Unicode character composition and decomposition utilities as described in Unicode Standard Annex #15.
This crate requires Rust 1.36+.
extern crate unicode_normalization;
use unicode_normalization::char::compose;
use unicode_normalization::UnicodeNormalization;
fn main() {
assert_eq!(compose('A','\u{30a}'), Some('Å'));
let s = "ÅΩ";
let c = s.nfc().collect::<String>();
assert_eq!(c, "ÅΩ");
}
You can use this package in your project by adding the following
to your Cargo.toml:
[dependencies]
unicode-normalization = "0.1.25"
no_std + alloc supportThis crate is completely no_std + alloc compatible. This can be enabled by disabling the std feature, i.e. specifying default-features = false for this crate on your Cargo.toml.
Dependencies' MSRVs evolve independently of this crate's MSRV. Old versions of cargo will always try to get the most recent versions of the dependencies. Therefore, if you are having troubles compiling on an old Rust version, try to install an older version of the incompatible dependency.
For instance, to compile on Rust 1.36, tinyvec must be <=1.6.0
cargo update -p tinyvec --precise 1.6.0
(top 30 of 31)
Rust
99.5%
Unicode Normalization forms according to UAX#15 rules
198
stars
215
commits
Rust
primary language
Nov 3, 2025
updated
Unicode character composition and decomposition utilities as described in Unicode Standard Annex #15.
This crate requires Rust 1.36+.
extern crate unicode_normalization;
use unicode_normalization::char::compose;
use unicode_normalization::UnicodeNormalization;
fn main() {
assert_eq!(compose('A','\u{30a}'), Some('Å'));
let s = "ÅΩ";
let c = s.nfc().collect::<String>();
assert_eq!(c, "ÅΩ");
}
You can use this package in your project by adding the following
to your Cargo.toml:
[dependencies]
unicode-normalization = "0.1.25"
no_std + alloc supportThis crate is completely no_std + alloc compatible. This can be enabled by disabling the std feature, i.e. specifying default-features = false for this crate on your Cargo.toml.
Dependencies' MSRVs evolve independently of this crate's MSRV. Old versions of cargo will always try to get the most recent versions of the dependencies. Therefore, if you are having troubles compiling on an old Rust version, try to install an older version of the incompatible dependency.
For instance, to compile on Rust 1.36, tinyvec must be <=1.6.0
cargo update -p tinyvec --precise 1.6.0
(top 30 of 31)
Rust
99.5%