无法使用点语法访问嵌套枚举,但您可以使用if let:
pub enum X {
A(Y),
B(Z)
}
pub enum Y {
C,
D(u32)
}
pub enum Z {
E
}
fn main() {
let x = X::A(Y::D(12));
if let X::A(Y::D(n)) = x {
println!("Got it: {}", n);
} else {
println!("Nope");
}
}
Run Code Online (Sandbox Code Playgroud)
(在这里试试)
if let使代码可以说比简洁更简洁match.当然,这是有效的match.