我尝试在Rust lang中匹配String
,但我不能:
for (key, value) in obj.iter() {
let valueType = match Some(value.to_string()) {
Some(ref x) if x == "some_value" => string_gen(),
_ => "test".to_string()
};
println!("{}", value);
println!("{}", valueType);
}
当迭代器的值为“some_value”时,我必须匹配“some_value”这个词
我做了很多搜索,并且有很多人遇到同样的问题。
答案 0 :(得分:2)
您可以通过&str
中的String
来完成此操作,例如:
match Some(&*value.to_string()) {
Some("some_value") => string_gen(),
_ => "test".to_string()
}
但是直接匹配String
的模式:不,你不能。模式匹配完全是结构比较,而不是像==
这样的任意用户定义的代码比较。 String
是一个包含少量私有字段的结构类型,因此您无法匹配其内部。你只能得到一个可以比较的&str
。