Wann ist die Schließung umzusetzen, Fn, FnMut und FnOnce?
Was sind die bestimmten Bedingungen für eine Sperrung zu implementieren, die Fn
, FnMut
und FnOnce
Eigenschaften?
Ist:
- Wann ist die Schließung nicht Umsetzung der
FnOnce
Eigenschaft? - Wann ist die Schließung nicht Umsetzung der
FnMut
Eigenschaft? - Wann ist die Schließung nicht Umsetzung der
Fn
Eigenschaft?
Beispielsweise, mutiert der Zustand des Verschluss Körpers macht der compiler nicht implementiert Fn
drauf.
- Haben Sie gesehen, diese letzten guter Artikel über closures?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Züge stehen mehr und mehr restriktiven Eigenschaften über Verschlüsse/Funktionen, gekennzeichnet durch die Unterschriften Ihrer
call_...
Methode, und vor allem die Art derself
:FnOnce
(self
) sind Funktionen, die aufgerufen werden kann, einmal,FnMut
(&mut self
) sind Funktionen, die aufgerufen werden können, wenn Sie&mut
Zugang zu Ihrer UmweltFn
(&self
) sind Funktionen, kann noch genannt werden, wenn Sie nur&
Zugang zu Ihrer Umwelt.Verschluss
|...| ...
wird automatisch umgesetzt, als viele von denen, wie es kann.FnOnce
: ein Verschluss, der nicht aufgerufen werden kann, sobald verdient nicht den Namen. Beachten Sie, dass, wenn eine Schließung nur implementiertFnOnce
es kann nur einmal aufgerufen werden.FnMut
, so dass Sie mehr als einmal aufgerufen werden (wenn es unaliased Zugriff auf das function-Objekt).Fn
, so dass Sie aufgerufen werden, im wesentlichen überall.Diese Einschränkungen Folgen direkt aus der Art der
self
und die "desugaring" der Verschlüsse in structs beschrieben in Suchen-Verschluss in Rost).Informationen über Straßensperren in Rust ab 2017, siehe die die Verschlüsse Kapitel in der Rost-Buch.
FnOnce
wird, bedeutet dies, dass es nur einmal aufgerufen werden können?FnOnce
".