Descobrindo o comprimento de uma string

Rust:
Descobrindo o comprimento de uma string

Como Fazer:

fn main() {
    let minha_string = "Olá, mundo!";
    let tamanho = minha_string.chars().count(); // Conta os caracteres Unicode corretamente
    println!("O tamanho da string é: {}", tamanho);
    // Saída: O tamanho da string é: 12
}

Se sua string usar somente ASCII, você pode usar um método mais direto:

fn main() {
    let minha_string = "Olá, mundo!";
    let tamanho = minha_string.len(); // Bom para ASCII, pode ser impreciso para Unicode
    println!("O tamanho da string (em bytes) é: {}", tamanho);
    // Saída: O tamanho da string (em bytes) é: 13
}

Aprofundando

Em Rust, strings são uma sequência de bytes, e isso complica um pouco as coisas. Há algumas maneiras de contar ’tamanho’, e tudo depende de como você encara uma string.

  • len: Retorna o número de bytes. Ótimo para eficiência quando você sabe que está lidando com ASCII. Mas cuidado: com caracteres Unicode (como acentos ou emojis), você terá um número de bytes, não de caracteres.
  • chars().count(): Conta os caracteres como elementos de ‘char’, que são pontos de código Unicode. Grátis para erros de multibyte, mas mais lento porque precisa interpretar a string.

Historicamente, a escolha de Rust para lidar com UTF-8 como formato padrão reflete uma preferência moderna por compatibilidade global, em vez da simplicidade do ASCII.

Alternativas: Bibliotecas especializadas podem oferecer maneiras diferentes de manipular e medir strings, algumas focadas em desempenho, outras em flexibilidade.

Implementação: Na prática, contar caracteres Unicode corretamente é complicado. Rust lida com isso ao expor diferentes métodos para diferentes situações, encorajando o programador a escolher conscientemente como medir suas strings.

Veja Também