Ich verstehe dies in Rust illegal ist:Möglich, eine Struktur/Tupel von Eigenschaften in Rust zu haben?
trait A { }
struct S { a: A, b: A }
Der Grund dafür ist, dass alle Mitglieder mit Ausnahme der letzten bemessen sein muss, und ein Merkmal ist nicht Größe.
Bedeutet das, dass es unmöglich ist, eine Struktur/ein Tupel von Merkmalen zu haben? Wie würde ich ein Paar Werte von einer Funktion zurückgeben und ich weiß nur, dass sie ein bestimmtes Merkmal implementieren?
Danke. Ich denke, S3 ist was ich suche, aber wie macht diese Deklaration die Größe der Struktur so groß, dass der Compiler sich nicht beschweren kann? – rityzmon
@RYYZMON, weil 'A1' und' A2' tatsächliche Typen sind, wenn sie instanziiert werden, obwohl die Eigenschaft 'A' nicht groß ist. Sie müssen den Typ "A1" und "A2" angeben, wenn Sie die generische Struktur in Ihrem Code verwenden. So (und wann) kennt der Compiler die Größe Ihrer Typen, weil Sie dem Compiler buchstäblich sagen, was genau diese Typen sind. – WiSaGaN
Danke. Und wie würde ich die gleiche Technik verwenden, wenn ich ein Tupel von Merkmalen von einer Funktion zurückgeben möchte? Ein spezifisches Problem, das ich herausfinden möchte, ist 'Merkmal T {fn func (& Selbst, x: & Selbst) -> (Selbst, Selbst); } '. Die einzelne Funktion in der Eigenschaft nimmt ein anderes Objekt des gleichen Typs und gibt zwei weitere Objekte desselben Typs zurück. – rityzmon