Borrowing
Rust has two kinds of references
&Tis a non-null reference to an immutable object, similar toconst T&in C++.&mut Tis a mutable (or unique) reference.
The core of Rust's safety guarantees is the "shared xor mutable" rule. An object can be borrowed by either a single &mut reference, or multiple & references.
fn main() { // `let mut` defines a mutable variable. By default variables are immutable. let mut list = vec![1, 2, 3]; // Creating an iterator borrows `list` let mut iter = list.iter(); println!("{:?}", iter.next()); // We cannot mutate `list` here while it is borrowed // list.push(4); println!("{:?}", iter.next()); }