Esta caja es una bifurcación de https://github.com/unicode-rs/unicode-width con unicode 16 soporte y eliminó normalization .
Determine el ancho mostrado de los tipos char y str de acuerdo con las reglas del Anexo N. #11 de Unicode.
use unicode_width_16 :: UnicodeWidthStr ;
fn main ( ) {
let teststr = "Hello, world!" ;
let width = UnicodeWidthStr :: width ( teststr ) ;
println ! ( "{}" , teststr ) ;
println ! ( "The above string is {} columns wide." , width ) ;
let width = teststr . width_cjk ( ) ;
println ! ( "The above string is {} columns wide (CJK)." , width ) ;
}Nota: Los valores de ancho calculado pueden no coincidir con el ancho de columna renderizado real. Por ejemplo, la mujer emoji científica consta de una mujer emoji, un carpinero de anchura cero y un emoji de microscopio.
use unicode_width_16 :: UnicodeWidthStr ;
fn main ( ) {
assert_eq ! ( UnicodeWidthStr ::width ( "?" ) , 2 ) ; // Woman
assert_eq ! ( UnicodeWidthStr ::width ( "?" ) , 2 ) ; // Microscope
assert_eq ! ( UnicodeWidthStr ::width ( "??" ) , 4 ) ; // Woman scientist
}Consulte Unicode Standard Annex #11 para obtener detalles precisos sobre lo que está y no está cubierto por esta caja.
Unicode-Width no depende de libstd, por lo que se puede usar en cajas con el atributo #![no_std] .
Puede usar este paquete en su proyecto agregando lo siguiente a su Cargo.toml :
[ dependencies ]
unicode-width-16 = " 0.1.0 "