Вот еще один способ сделать это:
struct Point {
x: f64,
y: f64,
}
enum Shape {
Circle(Point, f64),
}
fn main() {
let Shape::Circle(_, radius) = Shape::Circle(Point { x: 0.0, y: 0.0 }, 10.0);
println!("value: {}", radius);
}
Это работает, только если шаблон неопровержим, например, когда тип перечисления, которому вы соответствуете, имеет только один вариант. Чтобы сделать это, мне пришлось удалить неиспользованный вариант Rectangle
.
В тех случаях, когда у вас есть более одного варианта, вам, вероятно, все равно понадобится выражение полного соответствия, поскольку вы, вероятно, обрабатываете не только один вид формы.