Ich versuche herauszufinden, wie Sie eine Funktion über einen Kanal senden, und wie Sie zusätzliches Klonen vermeiden, um die Funktion am anderen Ende auszuführen. Wenn ich die zusätzlichen Klonvorgang innerhalb des Verschlusses entfernen, bekomme ich folgende Fehlermeldung:Kann nicht aus gefangenen äußeren Variablen in einem 'Fn'-Schließung bewegen
error: cannot move out of captured outer variable in an 'Fn' closure
die Tatsache ignorieren, dass dieser Code tut absolut nichts, und macht Gebrauch von einem globalen wandelbar statischen Sender<T>
, stellt es das, was ich bin versuchen zu erreichen, während die richtigen Compilerfehler geben. Dieser Code ist nicht zum Ausführen, gerade kompiliert.
Gibt es eine bessere Methode, um diesen Fehler zu umgehen und/oder eine andere Möglichkeit, Funktionen über Kanäle zu senden?
Leider ist stabil meine einzige Option. Es sieht so aus, als hättest du gerade bestätigt, was ich bereits versucht und herausgefunden habe, aber jemand anderes könnte das als super hilfreich empfinden, der die Fähigkeit hat, jeden Abend zu benutzen. Danke :) – nathansizemore
Sie können einen Hack verwenden. Verwenden Sie immer noch eine 'Fn' und bewegen Sie nur in' Option', die Sie mit 'take' verlassen. Dann bekommst du einen Laufzeitfehler, wenn du deine 'Fn' falsch verwendest. –
Was ist, wenn ich wegen einer Bibliotheksanforderung ein' Fn' benötige? –