struct S { v: i32 } fn f(v: i32) -> i32 { (v + 1) / 2 } fn main() { let cell = std::cell::RefCell::new(S{v:666}); let c1 = std::cell::RefCell::new(S{v:0}); let a = f(-1); let r1 = cell.borrow(); let mut r2 = c1.borrow_mut(); let r3; if a == 0 { r3 = cell.borrow(); } else { r3 = c1.borrow(); } println!("{} {} {}", r1.v, r2.v, r3.v); r2.v = -1; println!("{} {} {}", r1.v, r2.v, r3.v) }