本文介绍了如何将字符串与字符串文字进行匹配?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图弄清楚如何在Rust中匹配 String
.
I'm trying to figure out how to match a String
in Rust.
我最初尝试像这样进行匹配,但是我发现Rust不能从 std :: string :: String
隐式转换为& str
.
I initially tried matching like this, but I figured out Rust cannot implicitly cast from std::string::String
to &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
的函数.
I then tried to construct new String
objects, as I could not find a function to cast a String
to 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"),
}
}
这给了我3次以下错误:
This gave me the following error 3 times:
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
如何在Rust中实际匹配 String
?
How to actually match String
s in Rust?
推荐答案
您可以执行以下操作:
match &stringthing[..] {
"a" => println!("0"),
"b" => println!("1"),
"c" => println!("2"),
_ => println!("something else!"),
}
从Rust 1.7.0开始,还有一个 as_str
方法:
There's also an as_str
method as of Rust 1.7.0:
match stringthing.as_str() {
"a" => println!("0"),
"b" => println!("1"),
"c" => println!("2"),
_ => println!("something else!"),
}
这篇关于如何将字符串与字符串文字进行匹配?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!