¿Cómo proporciona Rust la semántica de movimiento?

losSitio web de Rust Language Las reclamaciones mueven la semántica como una de las características del lenguaje. Pero no puedo ver cómo se implementa la semántica de movimiento en Rust.

Las cajas de óxido son el único lugar donde se usa la semántica de movimiento.

let x = Box::new(5);
let y: Box<i32> = x; // x is 'moved'

El código Rust anterior se puede escribir en C ++ como

auto x = std::make_unique<int>();
auto y = std::move(x); // Note the explicit move

Por lo que sé (corrígeme si me equivoco),

Rust no tiene constructores en absoluto, y mucho menos mover constructores.No hay soporte para referencias de valor.No hay forma de crear sobrecargas de funciones con parámetros rvalue.

¿Cómo proporciona Rust la semántica de movimiento?

Respuestas a la pregunta(2)

Su respuesta a la pregunta