Esta caixa é um garfo de https://github.com/unicode-rs/unicode-width com suporte unicode 16 e normalization removida.
Determine a largura exibida dos tipos de char e str de acordo com as regras do Anexo Nº 11 do 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: Os valores de largura computados podem não corresponder à largura real da coluna renderizada. Por exemplo, a mulher cientista emoji é composta por uma mulher emoji, uma marceneira de largura zero e um emoji de microscópio.
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 o Unicode Standard Anex #11 para obter detalhes precisos sobre o que é e não é coberto por esta caixa.
O Unicode-Width não depende do libstd, para que possa ser usado em caixas com o atributo #![no_std] .
Você pode usar este pacote em seu projeto adicionando o seguinte à sua Cargo.toml :
[ dependencies ]
unicode-width-16 = " 0.1.0 "