This somehow causes a destructor to be called twice: ``` struct Foo { data: ~[int] } impl Foo { fn bar(~self) -> ~Foo { self } } fn main() { (~Foo{data: ~[1,2,3]}).bar(); } ```