Was ist die Bewegungssemantik in Rust?

In Rust gibt es zwei Möglichkeiten, eine Referenz zu nehmen

Leihe, d. h. eine Referenz nehmen, aber das Mutieren des Referenzziels nicht zulassen. Das& Operator leiht Besitz von einem Wert.

Borgen Sie sich veränderlichehmen Sie eine Referenz, um das Ziel zu mutieren. Das&muter Operator "@" leiht sich das Eigentum auf veränderbare Weise von einem Wert au

DasRust Dokumentation zu Ausleihregeln sagt:

Zunächst muss eine Ausleihe für einen Bereich gültig sein, der nicht größer ist als der des Eigentümers. Zweitens haben Sie möglicherweise die eine oder andere dieser beiden Arten von Ausleihen, aber nicht beide gleichzeitig:

eine oder mehrere Referenzen &T) zu einer Ressource, genau eine veränderbare Referenz &mut T).

Ich glaube, dass eine Referenz einen Zeiger auf den Wert erstellt und über den Zeiger auf den Wert zugreift. Dies könnte vom Compiler wegoptimiert werden, wenn es eine einfachere äquivalente Implementierung gibt.

Allerdings verstehe ich nicht, wasBewegun bedeutet und wie es implementiert wird.

Für Typen, die das @ implementierCopy Merkmal bedeutet es, z. durch Zuweisen der Struktur aus der Quelle oder einemmemcpy(). Für kleine Strukturen oder für Primitive ist diese Kopie effizient.

Und fürBewegun?

Diese Frage ist kein Duplikat vonWas ist die Bewegungssemantik? weil Rust und C ++ verschiedene Sprachen sind und die Bewegungssemantik zwischen den beiden unterschiedlich ist.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage