unicode width 16
1.0.0
Этот ящик представляет собой вилку https://github.com/unicode-rs/unicode-width с поддержкой Unicode 16 и удаленной normalization .
Определите отображаемая ширина типов char и str в соответствии с правилами Unicode Standard Annex #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 ) ;
}Примечание. Вычисленные значения ширины не могут соответствовать фактической ширине столбца. Например, женщина-эмодзи состоит из женщины-эмодзи, столяром по нулевой ширине и смайликов для микроскопа.
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
}См. Стандартное приложение Unicode #11 для точных подробностей о том, что является и не покрывается этим ящиком.
ширина Unicode не зависит от LIBSTD, поэтому его можно использовать в ящиках с атрибутом #![no_std] .
Вы можете использовать этот пакет в своем проекте, добавив следующее в свой Cargo.toml :
[ dependencies ]
unicode-width-16 = " 0.1.0 "