Para las categorías de caracteres Unicode, consulte http://www.fileformat.info/info/unicode/category/index.htm
Haskell implementa el tipo "Categoría general" y una función para determinar la "Categoría general" de un personaje.
Su implementación es así:
Propongo escribir un script de Python, que hace algo similar.
Tener tal tipo y función en Rust nos permite implementar funciones correctamente en el módulo "char". Consulte http://haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/src/Data-Char.html
El módulo en progreso llamado 'unicode::' en libstd es donde iba a esbozar una interfaz para libicu. En realidad, la decisión no es muy simple para la mayoría de las clases de personajes, y la UCI lo ha manejado bien. Supongo que podemos exponerlo bajo core::char si todos están de acuerdo con adoptar una dependencia en libicu.
libicu proporciona muchas características deseables adicionales, y probablemente esté presente en la mayoría de las computadoras (Python lo usa, por lo que debería estar bien para nosotros).
¿Queremos proporcionar enlaces libicu públicos o simplemente usarlos internamente en módulos como "char", "str", etc.?
Tiendo a inclinarme por lo segundo.
Para implementar correctamente las funciones en "char" de Rust usando libicu, creo que solo necesitamos llamar a funciones como "u_isspace()", "u_isdigit()", "u_forDigit()" (http://icu-project.org/ apiref/icu4c/uchar_8h.html).
Todavía no necesitaríamos enlaces libicu completos (incluidas las muchas definiciones de constantes).
Creo que deberíamos ir por la ruta libicu. Ver #1370
¿Podemos reabrir esto? Ya no dependemos de libicu, pero todavía no hay una manera fácil de encontrar la categoría de un personaje.
Perdón por comentar en un hilo tan antiguo, en realidad acabo de implementar gran parte del UCD (v9.0.0) aquí . No depende de libicu, ni de la biblioteca estándar, por lo que es de esperar que sea fácil de usar con proyectos (aunque probablemente no sea tan confiable como ICU).
Comentario más útil
Perdón por comentar en un hilo tan antiguo, en realidad acabo de implementar gran parte del UCD (v9.0.0) aquí . No depende de libicu, ni de la biblioteca estándar, por lo que es de esperar que sea fácil de usar con proyectos (aunque probablemente no sea tan confiable como ICU).