Estou tentando descobrir como combinar um Stringno Rust.
Inicialmente, tentei combinar dessa maneira, mas descobri que Rust não pode implicitamente lançar de std::string::Stringpara &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 Stringobjetos, pois não consegui encontrar uma função para converter a Stringem 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 Strings em Rust?
as_strainda 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_refporque é 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.