Tia*_*ago 1 string pattern-matching rust
是否可以匹配String字段?我不能使这个代码工作.
struct Foo {
x: int,
y: int,
str: String
}
pub fn main() {
let a = Foo { x: 1, y: 2 , str: "Hi".to_string()};
match a {
Foo { x: x, y: y, str: "Hi".to_string() } => println!("Found {}, {}", x, y),
_ => {}
}
}
Run Code Online (Sandbox Code Playgroud)
给出了这个错误:
<anon>:10:36: 10:37 error: expected one of `,` or `...`, found `.`
<anon>:10 Foo { x: x, y: y, str: "Hi".to_string() } => println!("Found {}, {}", x, y),
^
Run Code Online (Sandbox Code Playgroud)
match情况可能不包含这样的表达式"Hi".to_string(),唯一不变的(例如3,"Hi")或变量(例如x)要匹配上,String现场您将需要使用模式卫士:
match a {
Foo { x: x, y: y, str: ref str } if str == &"Hi" =>
println!("Found {}, {}", x, y),
_ => {}
}
Run Code Online (Sandbox Code Playgroud)
该if str == &"Hi"是模式守卫检查的价值String.请注意,模式保护强制我们使用ref捕获String对它的引用,而不是将其移出结构.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |