Dav*_*Roe 3 pattern-matching rust
是否可以String
使用静态str
值匹配Rust中的结构?这是一个最小的例子:
struct SomeStruct {
a: String,
}
fn main() {
let s = SomeStruct {
a: "Test".to_string(),
};
match s {
SomeStruct { a: "Test" } => {
println!("Match");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将无法编译,因为静态str
引用无法与String
成员匹配.它可以在没有解构的情况下工作a
,然后在匹配中添加嵌套的if语句吗?
目前无法以单一模式执行此操作,但有时可能会成为可能.目前,使用模式和匹配防护替换模式可能最简单,如下所示:
match s {
SomeStruct { ref a } if a == "Test" => {
println!("Match");
}
}
Run Code Online (Sandbox Code Playgroud)