Avatar ·

لماذا تحويل الحرف الأول من سلسلة نصية إلى حرف كبير في 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, и длина строки меняется!). А если я передам эмодзи или акцентированные символы ```