Я хотел бы загладить первую букву &str
. Это простая проблема, и я надеюсь на простое решение. Интуиция подсказывает мне сделать что-то вроде этого:
let mut s = "foobar";
s[0] = s[0].to_uppercase();
Но &str
нельзя индексировать следующим образом. Единственный способ, которым я смог это сделать, кажется слишком запутанным. Я конвертирую &str
в итератор, конвертирую итератор в вектор, верхний регистр - первый элемент в векторе, который создает итератор, который я индексирую, создавая Option
, который я разворачиваю, чтобы дать мне верхнюю - первая буква. Затем я конвертирую вектор в итератор, который я конвертирую в String
, который я конвертирую в &str
.
let s1 = "foobar";
let mut v: Vec<char> = s1.chars().collect();
v[0] = v[0].to_uppercase().nth(0).unwrap();
let s2: String = v.into_iter().collect();
let s3 = &s2;
Есть ли более простой способ, чем это, и если да, то что? Если нет, почему Rust спроектирован таким образом?