// $ rustc ownersystem_4_mutable.rs // $ ./ownersystem_4_mutable struct Bob { n: Vec } impl Bob { fn new() -> Bob { Bob { n: Vec::new() } } } fn func_1() { let mut n = Bob::new(); let n1 = &mut n; // doesn't work because there is already a mutable borrowing //let n2 = &n; func_2(n1); //func_3(n2); //works because both func_2 and func_3 only got read only references println!("{}", n.n[0]); } fn func_2(b: &mut Bob) { println!("{}", b.n[0]); } fn func_3(b: &Bob) { println!("{}", b.n[0]); } fn main() { func_1(); }