لماذا تحويل الحرف الأول من سلسلة نصية إلى حرف كبير في Rust مهمة غير بديهية؟
```html
Привет, коллеги!
Я относительно недавно начал осваивать Rust, перейдя с Python и JavaScript. Там всё просто: `"hello".capitalize()` или `str[0].toUpperCase() + str.slice(1)`. Но в Rust я столкнулся с тем, что даже такая базовая операция, как сделать первую букву строки заглавной, требует танцев с бубном.
Я написал такой код:
```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")); // хочу "Hello"
println!("{}", capitalize_first("привет")); // хочу "Привет"
}
```
На первый взгляд, всё работает. Но когда я попробовал обработать строку `"straße"` (немецкое слово "улица"), я получил `"Straße"`, хотя ожидал `"Straße"` (в немецком ß при капитализации превращается в SS, и длина строки меняется!). А если я передам эмодзи или акцентированные символы
```