Wie kann ich dem Iterator neue Methoden hinzufügen?

8

Ich möchte eine .unique() -Methode für Iteratoren definieren, die es mir ermöglicht, ohne Duplikate zu iterieren.

%Vor%

Dies wird kompiliert. Wenn ich jedoch versuche, in der gleichen Datei zu verwenden:

%Vor%

Ich erhalte den folgenden Fehler:

%Vor%

Was mache ich falsch? Wie würde ich diese willkürlichen hashbaren Typen erweitern?

    
Wilfred Hughes 29.05.2015, 23:59
quelle

1 Antwort

13

In Ihrem speziellen Fall liegt das daran, dass Sie Ihr Merkmal für einen Iterator von String implementiert haben, Ihr Vektor jedoch einen Iterator für &str bereitstellt. Hier ist eine allgemeinere Version:

%Vor%

Im Allgemeinen erstellen wir ein neues Merkmal Unique , das eine Subtraktion von Iterator ist. Das Merkmal definiert die Methode unique , die nur dann aufgerufen werden kann, wenn das iterierte Element Folgendes sein kann:

  1. Hashed
  2. Im Vergleich zur vollständigen Gleichheit
  3. geklont

Darüber hinaus muss der Artikel, der Iterator implementiert, zur Kompilierungszeit eine bekannte Größe haben. Dies geschieht, damit der Iterator vom Unique Iteratoradapter verbraucht werden kann.

Der andere wichtige Teil ist die umfassende Implementierung :

%Vor%     
Shepmaster 30.05.2015, 00:28
quelle

Tags und Links