Rust associates a value with an owner. Moving ownership to another variable makes the old binding unusable, and the value is dropped when its owner leaves scope.
The demo moves a token from a to b and blocks later use of a. Copy types behave differently, so not every assignment is a move.
When to use
Use it to reason about memory and resource lifetimes at compile time.