Diese Kiste ist eine Gabel von https://github.com/unicode-rs/unicode-width mit Unicode 16-Unterstützung und Entfernung normalization .
Bestimmen Sie die angezeigte Breite von char und str -Typen gemäß den Regeln der Unicode Standard Anhang Nr. 11.
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 ) ;
}HINWEIS: Die Werte der berechneten Breite stimmen möglicherweise nicht mit der tatsächlichen gerenderten Spaltenbreite überein. Zum Beispiel umfasst die Wissenschaftlerin Emoji eine Frau Emoji, einen Tischler mit Nullbreite und ein Mikroskop-Emoji.
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
}In Unicode Standard Annex Nr. 11 finden Sie genaue Details zu dem, was durch diese Kiste abgedeckt wird und nicht.
Unicode-Width hängt nicht von libstd ab, daher kann es in Kisten mit dem Attribut #![no_std] verwendet werden.
Sie können dieses Paket in Ihrem Projekt verwenden, indem Sie Folgendes zu Ihrer Cargo.toml hinzufügen.
[ dependencies ]
unicode-width-16 = " 0.1.0 "