#[derive(Debug)] enum Shape { Circle { r: f64 }, Rect { w: f64, h: f64 }, Dot } fn main() { let mut packed: Vec = Vec::new(); // name only; Rust elements are fixed-size packed.push(Shape::Circle { r: 1.0 }); packed.push(Shape::Dot); packed.push(Shape::Rect { w: 2.0, h: 3.0 }); for s in &mut packed { if let Shape::Rect { w, .. } = s { *w += 1.0; } } assert!(matches!(packed[2],Shape::Rect {w:3.0,h:3.0}));assert!(matches!(packed[1],Shape::Dot)); }