Ich versuche herauszufinden, wie man in Rust einen String
matcht.
Ich habe zunächst versucht, so zu matchen, aber ich habe festgestellt, dass Rust nicht implizit von std::string::String
zu &str
casten kann.
fn main() {
let stringthing = String::from("c");
match stringthing {
"a" => println!("0"),
"b" => println!("1"),
"c" => println!("2"),
}
}
Dies hat den Fehler:
Fehler[E0308]: fehlanpassende Typen
--> src/main.rs:4:9
|
4 | "a" => println!("0"),
| ^^^ erwarteter Typ `std::string::String`, gefunden Referenz
|
= Hinweis: erwarteter Typ `std::string::String`
gefundener Typ `&'static str`
Dann habe ich versucht, neue String
-Objekte zu konstruieren, da ich keine Funktion gefunden habe, um einen String
in einen &str
zu casten.
fn main() {
let stringthing = String::from("c");
match stringthing {
String::from("a") => println!("0"),
String::from("b") => println!("1"),
String::from("c") => println!("2"),
}
}
Dies hat mir den folgenden Fehler 3 Mal gegeben:
Fehler[E0164]: `String::from` benennt keine Tuple-Variante oder ein Tuple-Strukt
--> src/main.rs:4:9
|
4 | String::from("a") => return 0,
| ^^^^^^^^^^^^^^^^^ keine Tuple-Variante oder Struktur
Wie matched man in Rust tatsächlich String
s?