//@ 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<usize>) -> *const usize { | |
let addr: *const usize = &*x; | |
addr | |
} | |
fn checkval(box ref x: Box<usize>) -> 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); | |
} |