References
Like C++, Rust has references:
fn main() {
let mut x: i32 = 10;
let ref_x: &mut i32 = &mut x;
*ref_x = 20;
println!("x: {x}");
}
Some notes:
- We must dereference
ref_x
when assigning to it, similar to C and C++ pointers. - Rust will auto-dereference in some cases, in particular when invoking methods (try
ref_x.count_ones()
). - References that are declared as
mut
can be bound to different values over their lifetime.
Key points:
- Be sure to note the difference between
let mut ref_x: &i32
andlet ref_x: &mut i32
. The first one represents a mutable reference which can be bound to different values, while the second represents a reference to a mutable value.