Avatar ·

Como obter o número de caracteres em uma string em Rust, e não bytes?

Olá, colegas! Acabei de começar a estudar Rust e me deparei com um problema inesperado. Preciso saber o comprimento de uma string em caracteres (char), e não em bytes. Em outras linguagens, como Python ou Java, o método len() geralmente retorna o número de caracteres. Mas em Rust é diferente. Aqui está um exemplo que me confundiu: ```rust fn main() { let text = String::from("Привет, мир!"); println!("Comprimento da string: {}", text.len()); } ``` Eu esperava ver 12 (o número de caracteres na string "Привет, мир!"), mas obtive 20. Depois entendi que o método .len() conta bytes. Em UTF-8, caracteres cirílicos ocupam 2 bytes, então o resultado é diferente. Mas eu preciso exatamente do número de caracteres — para interface do usuário, validação de comprimento de entrada ou contagem de palavras. Alguém sabe se existe em Rust algum método que retorna o número de caracteres, e não bytes? Ou preciso implementar minha própria solução? Agradeço por exemplos de código. Importante: a string pode conter não apenas ASCII, mas também emojis, cirílico e outros caracteres Unicode.