Avatar ·

Pourquoi transformer la première lettre d'une chaîne en majuscule est une tâche si complexe en Rust ?

Salut, collègues ! J'ai récemment commencé à apprendre Rust, après être passé de Python et JavaScript. Là-bas, c'est simple : `"hello".capitalize()` ou `str[0].toUpperCase() + str.slice(1)`. Mais en Rust, j'ai découvert que même une opération aussi basique que mettre la première lettre d'une chaîne en majuscule nécessite des acrobaties. J'ai écrit ce code : ```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")); // je veux "Hello" println!("{}", capitalize_first("привет")); // je veux "Привет" } ``` À première vue, tout fonctionne. Mais quand j'ai essayé de traiter la chaîne `"straße"` (mot allemand pour "rue"), j'ai obtenu `"Straße"`, alors que je m'attendais à `"Straße"` (en allemand, ß se transforme en SS lors de la capitalisation, et la longueur de la chaîne change !). Et si je passe un emoji ou des caractères accentués...