使用盒装值
因为 Boxes 实现了 Deref<Target=T>
,所以你可以使用盒装值,就像它们包含的值一样。
let boxed_vec = Box::new(vec![1, 2, 3]);
println!("{}", boxed_vec.get(0));
如果要在盒装值上进行模式匹配,则可能必须手动取消引用该框。
struct Point {
x: i32,
y: i32,
}
let boxed_point = Box::new(Point { x: 0, y: 0});
// Notice the *. That dereferences the boxed value into just the value
match *boxed_point {
Point {x, y} => println!("Point is at ({}, {})", x, y),
}