Ich bemerke, dass Rust% Atomic*
Strukturen Funktionen haben, die den Wert ändern, wie zum Beispiel fetch_add
. Zum Beispiel kann ich dieses Programm schreiben:
Dies kompiliert und läuft gut, aber wenn ich die AtomicUsize
in eine normale Ganzzahl ändere, wird es (richtig) wegen Mutabilitätsbedenken nicht kompilieren:
Es wäre nicht sehr nützlich, wenn nicht so funktioniert. Mit &mut
references kann immer nur eins existieren, und zu diesem Zeitpunkt verweist noch kein &
, also wäre die ganze Frage der Atomizität der Operation strittig.
Eine andere Betrachtungsweise ist &mut
sind eindeutige Referenzen und &
aliasable Referenzen. Bei normalen Typen kann Mutation nur dann sicher auftreten, wenn Sie eine eindeutige Referenz haben, aber bei atomaren Typen geht es nur um Mutation (über Ersatz), ohne dass eine eindeutige Referenz benötigt wird.
Die Benennung von &
und &mut
war eine schwierige Angelegenheit mit viel Angst, Unsicherheit und Zweifeln in der Community und in Dokumenten wie Fokussierung auf Ownership erklärt, wie die Dinge tatsächlich sind. Die Sprache ist am Ende bei &
und &mut
geblieben, aber &mut
steht eigentlich eher für Eindeutigkeit als für Veränderlichkeit (es ist nur so, dass die beiden meistens äquivalent sind).
Tags und Links rust