Sto cercando di capire come abbinare un String
in Rust.
Inizialmente ho provato ad abbinare in questo modo, ma ho capito che Rust non può implicitamente lanciare da std::string::String
a &str
.
fn main() {
let stringthing = String::from("c");
match stringthing {
"a" => println!("0"),
"b" => println!("1"),
"c" => println!("2"),
}
}
Questo ha l'errore:
error[E0308]: mismatched types
--> src/main.rs:4:9
|
4 | "a" => println!("0"),
| ^^^ expected struct `std::string::String`, found reference
|
= note: expected type `std::string::String`
found type `&'static str`
Ho quindi cercato di costruire nuovi String
oggetti, in quanto non riuscivo a trovare una funzione per trasmettere String
a a &str
.
fn main() {
let stringthing = String::from("c");
match stringthing {
String::from("a") => println!("0"),
String::from("b") => println!("1"),
String::from("c") => println!("2"),
}
}
Questo mi ha dato il seguente errore 3 volte:
error[E0164]: `String::from` does not name a tuple variant or a tuple struct
--> src/main.rs:4:9
|
4 | String::from("a") => return 0,
| ^^^^^^^^^^^^^^^^^ not a tuple variant or struct
Come abbinare effettivamente String
s in Rust?
as_str
non esisteva ancora. Ho cambiato la risposta accettata ma ringrazio tutte le persone che hanno risposto a questa domanda!
stringthing.as_str()
è probabilmente la più semplice di tutte le risposte; Non mi piaceas_ref
perché è inutilmente generale, che può portare a bug, e non così esplicito, non è del tutto chiaro cheas_ref()
sarà un&str
,as_str
è semplice e chiaro.