Estou tentando descobrir como combinar um String
no Rust.
Inicialmente, tentei combinar dessa maneira, mas descobri que Rust não pode implicitamente lançar de std::string::String
para &str
.
fn main() {
let stringthing = String::from("c");
match stringthing {
"a" => println!("0"),
"b" => println!("1"),
"c" => println!("2"),
}
}
Este tem o erro:
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`
Tentei então construir novos String
objetos, pois não consegui encontrar uma função para converter a String
em 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"),
}
}
Isso me deu o seguinte erro 3 vezes:
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
Como realmente combinar String
s em Rust?
as_str
ainda não existia. Alterei a resposta aceita, mas agradeço a todas as pessoas que responderam a essa pergunta!
stringthing.as_str()
é provavelmente a mais direta de todas as respostas; Eu não gostoas_ref
porque é desnecessariamente geral, o que pode levar a erros, e não tão explícito, não está completamente claro queas_ref()
será um&str
,as_str
é simples e claro.