mod string; pub mod nfc { use std::string::String as StdString; use unicode_normalization::UnicodeNormalization as _; pub type String = super::string::String; #[derive(Clone, Debug, Default, Eq, PartialEq)] pub struct Nfc; impl super::string::Normalize for Nfc { fn normalize(&self, value: &str) -> StdString { value.nfc().collect() } } } pub mod ident { use std::string::String as StdString; use unicode_casefold::UnicodeCaseFold as _; use unicode_normalization::UnicodeNormalization as _; pub type String = super::string::String; #[derive(Clone, Debug, Default, Eq, PartialEq)] pub struct Ident; impl super::string::Normalize for Ident { fn normalize(&self, value: &str) -> StdString { value.case_fold().nfkc().collect() } } }