Avatar ·

Por que em Rust transformar a primeira letra de uma string em maiúscula é uma tarefa tão não trivial?

Olá, colegas! Comecei a aprender Rust há relativamente pouco tempo, vindo do Python e JavaScript. Lá é simples: `"hello".capitalize()` ou `str[0].toUpperCase() + str.slice(1)`. Mas em Rust me deparei com o fato de que até mesmo uma operação básica como tornar a primeira letra de uma string maiúscula exige danças com pandeiro. Escrevi este código: ```rust fn capitalize_first(s: &str) -> String { let mut chars = s.chars(); match chars.next() { Some(first) => first.to_uppercase().to_string() + chars.as_str(), None => String::new(), } } fn main() { println!("{}", capitalize_first("hello")); // quero "Hello" println!("{}", capitalize_first("привет")); // quero "Привет" } ``` À primeira vista, tudo funciona. Mas quando tentei processar a string `"straße"` (palavra alemã para "rua"), obtive `"Straße"`, embora esperasse `"Straße"` (em alemão, ß ao ser capitalizado se transforma em SS, e o comprimento da string muda!). E se eu passar um emoji ou caracteres acentuados