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&mut
er 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.