Avatar ·

Wie man in Rust Zeichen für Zeichen (nach Unicode-Zeichen) über einen String iteriert

Hallo zusammen! Ich habe gerade angefangen, Rust zu lernen, und habe ein Problem mit der Iteration über einen String. In anderen Sprachen (z.B. Python oder C++) bin ich es gewohnt, dass ein String ein Array von Zeichen ist und ich einfach über einen Index oder eine for-Schleife iterieren kann. Aber in Rust ist es komplizierter. Folgendes habe ich versucht: ```rust let s = "Привет, мир!"; for c in s { println!("{}", c); } ``` Der Compiler gibt einen Fehler aus: `error[E0277]: the trait bound \`str: Iterator\` is not satisfied`. Ich verstehe, dass `str` kein Iterator ist, aber wie bekomme ich dann jedes Zeichen? Ich habe auch versucht, über den Index zuzugreifen: ```rust let s = "Привет"; println!("{}", s[0]); // Fehler! ``` Und wieder ein Fehler: Strings in Rust können nicht direkt indiziert werden, weil Unicode-Zeichen unterschiedlich viele Bytes belegen können. Letztendlich brauche ich: einen String nehmen, über jedes Zeichen iterieren (einschließlich Kyrillisch, Emojis und Sonderzeichen) und etwas mit jedem tun. Zum Beispiel die Anzahl der Zeichen zählen oder alle Vokale durch '*' ersetzen.