// Copyright 2013 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. // 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) -> uint; } struct BarStruct { x: uint } impl FooTrait for BarStruct { fn foo(~self) -> uint { self.x } } pub fn main() { let foo = ~BarStruct{ x: 22 } as ~FooTrait; assert_eq!(22, foo.foo()); }