//@ run-pass | |
// Test invoked `&self` methods on owned objects where the values | |
// closed over contain managed values. This implies that the boxes | |
// will have headers that must be skipped over. | |
trait FooTrait { | |
fn foo(self: Box<Self>) -> usize; | |
} | |
struct BarStruct { | |
x: usize | |
} | |
impl FooTrait for BarStruct { | |
fn foo(self: Box<BarStruct>) -> usize { | |
self.x | |
} | |
} | |
pub fn main() { | |
let foo = Box::new(BarStruct{ x: 22 }) as Box<dyn FooTrait>; | |
assert_eq!(22, foo.foo()); | |
} |