// $ rustc ownersystem_3_borrowing.rs // $ ./ownersystem_3_borrowing struct Bob { n: Vec } impl Bob { fn new() -> Bob { Bob { n: Vec::new() } } } fn func_1() { let n = Bob::new(); let n1 = &n; 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: &Bob) { println!("{}", b.n[0]); } fn func_3(b: &Bob) { println!("{}", b.n[0]); } fn main() { func_1(); }