So verschieben Sie einen eigenen Zeiger

8

Als Referenz verwende ich Rust 0.7.

Ich versuche, eine Stack-Implementierung zu erstellen, die eine verknüpfte Liste verwendet, und ich stehe in Schwierigkeiten.

%Vor%

Wenn ich rustc stack.rs versuche, bekomme ich den folgenden Fehler:

%Vor% Ich weiß nicht, wie ich das überwinden könnte oder was ich anders machen könnte, um dies zu ermöglichen. Es scheint, als ob ich in der Lage sein sollte, diese Datenstruktur zu erstellen, ohne verwaltete Zeiger zu verwenden, aber ich habe nicht viel Dokumentation über solche Dinge gesehen.

    
Kyle Sletten 08.07.2013, 20:36
quelle

1 Antwort

5

Entweder die Zuweisung von sich selbst (was ich denke, beinhaltet das Konstruieren einer neuen Sache daraus, wie im Fall von Link(item, *self) impliziert einen Zug . Dies bedeutet, dass das self im Prozess des Konstruierens des neuen Link unbrauchbar wird, weil:

  

"Nachdem ein Wert verschoben wurde, kann er nicht mehr vom Quellstandort verwendet werden und wird dort nicht zerstört."

The Right Way ™ ist wahrscheinlich am besten dokumentiert durch das, was in diesem Beispiel gemacht wurde die stdlib . Es ist eine doppelt verknüpfte Liste, und es wird verwaltet, aber es ist veränderbar, und ich hoffe, dass es frei kopiert wird. Es gibt auch eine Liste nützlicher Containertypen .

Ich habe es jedoch geschafft, diese unveränderliche Version Ihrer Datenstruktur zum Laufen zu bringen.

%Vor%     
tehgeekmeister 09.07.2013, 05:42
quelle

Tags und Links