Sie kann nicht Überladung Zuweisung. Das Verschieben einer Variablen von einem Ort zu einem anderen ist eine Kernkomponente der Eigentumssemantik von Rust und nicht übersteuerbar.
Eine andere Antwort schlägt vor, dass Sie das Merkmal Copy
benutzerdefiniert implementieren. Das macht keinen Sinn, da there's nothing to implement:
pub trait Copy: Clone { }
Sie Clone
für einen Typ implementieren könnte, aber clone
haben Sie es zu verwenden explizit zu nennen: noch
let foo = bar.clone();
Die tatsächliche Zuordnung nur das Kopieren Bits von der rechten Seite auf der linken Seite, der einzige Unterschied ist, dass Sie das Eigentum von bar
nicht aufgeben.
Wenn Ihre Art kann durch einfaches Kopieren Bits dupliziert werden, dann ist es sinnvoll Copy
zu implementieren. Wenn durch Ausführen einer Art von Funktion dupliziert werden kann, ist es sinnvoll, Clone
zu implementieren. Es gibt keine Möglichkeit, implizit Code bei einer bestimmten Zuweisung eines Typs auszuführen (und ich zähle das als gute Sache).
Ich merkte, mein Verständnis von Rust Zuordnung war falsch, wie ich in meiner Frage gesagt habe, kam ich in Rust mit C++ zurück. (Das macht meistens Verwirrung.) –