Here are the different parts of UTS 39 we may wish to implement: Needed for [RFC 2457](https://rust-lang.github.io/rfcs/2457-non-ascii-idents.html): - [x] `is_allowed()` for the [general security profile](https://www.unicode.org/reports/tr39/#General_Security_Profile) - [x] [Mixed script detection](https://www.unicode.org/reports/tr39/#Mixed_Script_Detection). - A method for knowing what script(s) a string is in (https://github.com/unicode-rs/unicode-security/issues/4) - A method for checking if a string has mixed scripts - [x] [Restriction level 4](https://www.unicode.org/reports/tr39/#Restriction_Level_Detection): We only need level 4, but implementing all of them would be nice - [x] We don't need to implement full mixed script confusables for rustc, [we can write a more targeted heuristic](https://rust-lang.github.io/rfcs/2457-non-ascii-idents.html#mixed-script-confusables-lint) Unnecessary for Rust, but nice to have: - [x] `identifier_type()` to return the exact categorization (https://github.com/unicode-rs/unicode-security/pull/7) - [ ] [IDN security profile](https://www.unicode.org/reports/tr39/#IDN_Security_Profiles) - [ ] [Email security profile](https://www.unicode.org/reports/tr39/#Email_Security_Profiles) - [ ] [Mixed number detection](https://www.unicode.org/reports/tr39/#Mixed_Number_Detection) - [ ] Full [Whole script and mixed script confusables](https://www.unicode.org/reports/tr39/#Confusable_Detection) - [ ] <s>[Optional Detection](https://www.unicode.org/reports/tr39/#Optional_Detection)</s> Out of scope, needs CLDR
Here are the different parts of UTS 39 we may wish to implement:
Needed for RFC 2457:
is_allowed()for the general security profileUnnecessary for Rust, but nice to have:
identifier_type()to return the exact categorization (Support Identifier Type #7)Optional DetectionOut of scope, needs CLDR