Avatar ·

Warum ist es in Rust eine so nicht-triviale Aufgabe, den ersten Buchstaben eines Strings großzuschreiben?

Hallo, Kollegen! Ich habe vor relativ kurzer Zeit angefangen, Rust zu lernen, nachdem ich von Python und JavaScript umgestiegen bin. Dort ist alles einfach: `"hello".capitalize()` oder `str[0].toUpperCase() + str.slice(1)`. Aber in Rust bin ich darauf gestoßen, dass selbst so eine grundlegende Operation wie den ersten Buchstaben eines Strings großzuschreiben, ein Hokuspokus erfordert. Ich habe diesen Code geschrieben: ```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")); // möchte "Hello" println!("{}", capitalize_first("привет")); // möchte "Привет" } ``` Auf den ersten Blick funktioniert alles. Aber als ich versuchte, den String `"straße"` (deutsches Wort für "Straße") zu verarbeiten, bekam ich `"Straße"`, obwohl ich `"Straße"` erwartet hatte (im Deutschen wird ß bei der Großschreibung zu SS, und die Länge des Strings ändert sich!). Und wenn ich ein Emoji oder akzentuierte Zeichen übergebe...