// run-pass // Test argument patterns where we create refs to the inside of // boxes. Make sure that we don't free the box as we match the // pattern. #![feature(box_patterns)] fn getaddr(box ref x: Box) -> *const usize { let addr: *const usize = &*x; addr } fn checkval(box ref x: Box) -> usize { *x } pub fn main() { let obj: Box<_> = Box::new(1); let objptr: *const usize = &*obj; let xptr = getaddr(obj); assert_eq!(objptr, xptr); let obj = Box::new(22); assert_eq!(checkval(obj), 22); }