Warum wird der erste Buchstabe einer in Rust verwickelten Zeichenfolge in Großbuchstaben geschrieben?
Ich möchte den ersten Buchstaben eines @ groß schreib&str
. Es ist ein einfaches Problem und ich hoffe auf eine einfache Lösung. Intuition sagt mir, ich soll so etwas machen:
let mut s = "foobar";
s[0] = s[0].to_uppercase();
Aber&str
s kann nicht so indiziert werden. Der einzige Weg, den ich bisher geschafft habe, scheint zu kompliziert zu sein. Ich konvertiere das&str
in einen Iterator umwandeln, den Iterator in einen Vektor umwandeln, in Großbuchstaben das erste Element im Vektor, wodurch ein Iterator erstellt wird, in den ich indexiere, wodurch ein @ erstellt wiOption
, das ich auspacke, um den oberen Anfangsbuchstaben zu erhalten. Dann konvertiere ich den Vektor in einen Iterator, den ich in ein @ konvertierString
, das ich in ein @ konvertie&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;
Gibt es einen einfacheren Weg als diesen und wenn ja, welchen? Wenn nicht, warum ist Rust so konstruiert?