PR3_Rust/ownership system/ownersystem_3_borrowing.rs

33 lines
513 B
Rust

// $ rustc ownersystem_3_borrowing.rs
// $ ./ownersystem_3_borrowing
struct Bob {
n: Vec<i32>
}
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();
}