extern crate core; #[deriving(Show)]
struct Foo {
f : Box<int>
} fn main(){
let mut a = Foo {f: box 0};
let y : &Foo; // out(&a);
{
let b = Foo {f: box 10};
// b does not live long enough
// can not y = &b; let c = & mut a; // a borrowed by c
//a.f = box 11; // c moved by y
y = c; println!("{}", c.f); // cannot move out of `c` because it is borrowed
//let c1 = c;
}
//a.f = box 11;
println!("{}", y.f);
} fn out(v: &Foo) {
// borrow
println!("{}", v);
} fn test2(){
let mut a: Box<int> = box 1;
// shared borrow
let b = &a;
let c = b;
println!("{}", *b);
}