Cette caisse est une fourche de https://github.com/unicode-rs/unicode-width avec la prise en charge de l'Unicode 16 et normalization supprimée.
Déterminez la largeur affichée des types char et str selon les règles de l'annexe n ° 11 standard de l'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 ) ;
}Remarque: Les valeurs de largeur calculées peuvent ne pas correspondre à la largeur de colonne rendue réelle. Par exemple, la femme scientifique emoji comprend une femme emoji, un menuisier à largeur zéro et un emoji au microscope.
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
}Voir l'annexe # 11 standard de l'Unicode pour des détails précis sur ce qui est et n'est pas couvert par cette caisse.
Unicode-Width ne dépend pas de LiBSTD, il peut donc être utilisé dans des caisses avec l'attribut #![no_std] .
Vous pouvez utiliser ce package dans votre projet en ajoutant ce qui suit à votre Cargo.toml :
[ dependencies ]
unicode-width-16 = " 0.1.0 "