¿Qué son las semánticas de movimiento en Rust?

En Rust, hay dos posibilidades para tomar una referencia.

Pedir prestado, es decir, tome una referencia pero no permita la mutación del destino de referencia. los& El operador toma prestada la propiedad de un valor.

Pedir prestado mutablemente, es decir, tome una referencia para mutar el destino. los&mut El operador toma prestada la propiedad de un valor.

losDocumentación de óxido sobre reglas de préstamo dice:

Primero, cualquier préstamo debe durar un alcance no mayor que el del propietario. En segundo lugar, puede tener uno u otro de estos dos tipos de préstamos, pero no ambos al mismo tiempo:

una o más referencias (&T) a un recurso,exactamente una referencia mutable (&mut T)

Creo que tomar una referencia es crear un puntero al valor y acceder al valor mediante el puntero. Esto podría ser optimizado por el compilador si hay una implementación equivalente más simple.

Sin embargo, no entiendo quémoverse medios y cómo se implementa.

Para los tipos que implementan elCopy rasgo significa copiar, p. asignando la estructura miembro-sabio de la fuente, o unmemcpy(). Para estructuras pequeñas o para primitivas, esta copia es eficiente.

Y paramoverse?

Esta pregunta no es un duplicado de¿Qué son las semánticas de movimiento? porque Rust y C ++ son lenguajes diferentes y la semántica de movimiento es diferente entre los dos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta