Para tipos que são armazenados inteiramente na pilha e têm um tamanho conhecido em tempo de compilação (como inteiros, booleanos, números de ponto flutuante, caracteres e tuplas contendo apenas esses tipos), o Rust faz uma cópia bit a bit. Esses tipos implementam a _trait_ `Copy`.
```rust
fn main() {
let x = 5; // x é um i32, que é armazenado na pilha.
let y = x; // x é copiado para y.
// Ambos x e y são válidos.
println!("x = {}, y = {}", x, y); // Ambos x e y podem ser usados.
}
```
Não há "movimentação" aqui no sentido de invalidar `x`, porque copiar alguns bytes na pilha é muito barato e não há dados no _heap_ para se preocupar com _double-freeing_.
**:: Referência ::** [What is Ownership? - The Rust Programming Language](https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html)