Wie zerstöre ich ein Tupel, so dass die Bindungen veränderbar sind?

8

Wenn ich die folgende Struktur habe:

%Vor%

Und die folgende Funktion:

%Vor%

Wie lehne ich val1 und val2 als veränderbar aus, wenn also die Änderungen in der ursprünglichen Struktur erscheinen?

    
euclio 23.07.2015, 18:13
quelle

2 Antworten

9

Sie haben ein paar Probleme:

  • Sie haben &mut an die falsche Stelle gesetzt; &mut ist Teil des Typs, nicht das Argument (es sei denn, Sie zerstören das Argument, was Sie nicht sind).

  • Sie können das Argument struct nicht aufrufen, weil das ein Schlüsselwort ist.

  • Sie können eine veränderbare Referenz nicht mit einer direkten Zuweisung zuweisen.

Also, mit diesen Gedanken, hier ist eine funktionierende Lösung:

%Vor%

Der Schlüssel hier ist, dass ref in einem Muster by-reference bindet; Wenn Sie das mit mut kombinieren, erhalten Sie eine änderbare Referenz. Insbesondere erhalten Sie ein Paar &mut i32 s. Da es sich um Verweise handelt, müssen Sie die Verweise auf sie aufheben, um sie durch sie zuzuweisen (andernfalls würden Sie versuchen, die Referenz selbst neu zuzuweisen).

    
DK. 23.07.2015, 18:23
quelle
8

Sie haben zwei leicht unterschiedliche Fragen.

Sie können eine veränderbare Bindung erstellen, indem Sie mut zweimal sagen:

%Vor%

Aber damit es sich im ursprünglichen Tupel ändert, brauchen Sie eine veränderbare Referenz in dieses Tupel:

%Vor%     
Shepmaster 23.07.2015 18:20
quelle

Tags und Links