Erstellung heterogener Typenlisten in Rust

8

Ich habe die folgende Definition von HList :

%Vor%

Wie würde ich die Typen konstruieren, indem ich sie an das Ende angehängt habe?

Das Einfügen als erstes Element ist trivial:

%Vor%

Playground-Link

Aber Elemente am Ende anzuhängen, während die gleiche Struktur beibehalten wird, scheint hart.

%Vor%

Ich weiß, dass die Antwort eine rekursive Funktion ist, die nach der letzten Nil in der Liste sucht und dort den aktuellen Wert hinzufügt, aber ich habe Schwierigkeiten, eine Funktion für die Eigenschaft zu definieren, die mit einer solchen rekursiven Funktion arbeitet.

Angenommen, wir haben eine Eigenschaft Push mit der Methode push , die ein Element in die HList in der innersten Klammer hinzufügt:

%Vor%

Wie würde man es konstruieren?

    
Daniel Fath 24.10.2016, 13:28
quelle

2 Antworten

7

Rekursion bei der Verwendung von zugeordneten Typen scheint den Trick zu tun:

%Vor%

Playground-Link

    
Chris Emerson 24.10.2016, 16:09
quelle
3

Es ist wahrscheinlich besser, auf die Zero-Size-Daten ganz zu verzichten und nur mit Typen zu spielen:

%Vor%

Auf diese Weise können Ihre Werte Werte bleiben, und wenn Sie Mathe eingeben möchten, instanziieren Sie sie nicht. Hier ist ein vollständiges Beispiel.

    
Veedrac 24.10.2016 16:28
quelle

Tags und Links