Ownership — one owner. Borrowing — temporary access. References — borrowed values.
Ownership:
1let s1 = String::from("hello");2let s2 = s1; // Ownership moved
Borrowing:
1let s1 = String::from("hello");2let len = calculate_length(&s1); // Borrow
References:
1// Immutable reference2let r = &s1;34// Mutable reference5let r2 = &mut s1;
Key differences: