Effizientes Trimmen eines Strings

Ich habe eine Datei im CSV-Format mit einer ersten Datenspalte, die den optional mit @ abgeschlossenen Artikelcode darstell"UNIUNI" oder gemischte Schreibweise dieser Zeichen, geladen mit einem Barcode-Leser. Ich muss das letzte @ wegschneid"UNI" s.

In Rust habe ich versucht, mit teilweisem Erfolg eine Funktion zu schreiben, die im Wesentlichen so aussieht:

fn main() {
    // Ok: from "9846UNIUNI" to "9846"
    println!("{}", read_csv_rilev("9846UNIUNI".to_string()));

    // Wrong: from "9846uniuni" to "9846"
    println!("{}", read_csv_rilev("9846uniuni".to_string()));
}

fn read_csv_rilev(code: String) -> String {
    code
        //.to_uppercase() /*Unstable feature in Rust 1.1*/
        .trim_right_matches("UNI")
        .to_string()
}

Die ideale Funktionssignatur sieht wie folgt aus:

fn read_csv_rilev(mut s: &String) {/**/}

Aber wahrscheinlich ist eine In-Place-Aktion für einen String keine gute Idee. Tatsächlich gibt es in der Rust-Standardbibliothek nichts zu tun, außerString::pop().

Gibt es eine Möglichkeit, das Trimmen auf einen String anzuwenden, ohne einen anderen zuzuweisen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage