我试图找出如何匹配String
Rust 中的一个。
我最初尝试像这样进行匹配,但是我发现Rust不能隐式地从转换std::string::String
为&str
。
fn main() {
let stringthing = String::from("c");
match stringthing {
"a" => println!("0"),
"b" => println!("1"),
"c" => println!("2"),
}
}
这有错误:
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`
然后我试图构建新的String
对象,因为我无法找到一个功能投下String
的&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"),
}
}
这给了我3次以下错误:
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
如何String
在Rust中实际匹配s?
@佐夫你是对的。答案
—
Jeroen
as_str
尚不存在时被接受。我更改了接受的答案,但感谢所有回答此问题的人!
stringthing.as_str()
这可能是所有答案中最简单的答案;我不喜欢as_ref
,因为它是不必要一般情况下,这可能会导致错误,而不是明确的,它并没有完全清除as_ref()
将是一个&str
,as_str
简单明了。