Ownership is one of the most important concepts in Rust, and it's something that isn't present in most other languages. The idea that a value can be owned by a particular variable is often quite difficult to understand, especially in languages where copying is implicit, but this section will review the different ideas surrounding ownership.


  • let x: &T = ... // x is an immutable reference
  • let x: &mut T = ... // x is an exclusive, mutable reference
  • let _ = &mut foo; // borrow foo mutably (i.e., exclusively)
  • let _ = &foo; // borrow foo immutably
  • let _ = foo; // move foo (requires ownership)


  • In much older versions of Rust (before 1.0; May 2015), an owned variable had a type starting with ~. You may see this in very old examples.