1. Each value in Rust has a variable that’s called its owner.
  2. There can only be one owner at a time.
  3. When the owner goes out of scope, the value will be dropped.

These that the Rust compiler follows to validate that we do not attempt unsafe behavior.

They have different implications depending on whether our data is stored on the stack or the heap.