2015-01-25 6 views
10

Was folgt, wird nur als Beispiel und nicht als gültiger Rust-Code verwendet.Ist es möglich, die Größe eines Arrays mit dem Typparameter eines Generic zu steuern?

struct Vec<T: Sized, Count> { 
    a: [T; Count] 
} 

So etwas ist in C++ Vorlagen möglich, aber ich habe es in Rust nicht gesehen.

+0

I don‘ Ich denke schon, aber [es wurde bereits besprochen] (http://www.reddit.com/r/rust/comments/1z3dnx/ints_in_generic_type_parameters/) –

+0

Ich würde das als Antwort nehmen :). – Byron

Antwort

11

Wenn man sich das Design von Rust anschaut, merkt man, dass es zuerst mit den schwierigsten Problemen anfing (memory-safe, Data-Race-frei), aber ansonsten in vielen Bereichen "unvollständig" (im Vergleich was erreicht werden könnte).

Insbesondere generische Strukturen und Funktionen sind heute etwas eingeschränkt:

  • Mangel an höheren Kinded Typen (HKT)
  • Mangel an nicht-Typ Parameter => Arrays sind spezielle Gefasste und Implementierung eines Merkmal für ein Array ist a known issue, die Work-around es für ein paar verschiedenen Dimensionen zu implementieren sein
  • Mangel an variadische Parameter => Tupel sind spezielle gefasste~~POS=HEADCOMP und für alle Tupel ein Merkmal der Umsetzung ist ähnlich schwierig

Für den Moment sind diese nicht implementiert, nicht weil sie nicht gewünscht sind, sondern einfach weil die Zeit fehlte. Die Idee von Rust 1.0 bestand nicht darin, ein Endprodukt zu entwickeln, das sich nicht weiterentwickeln würde, sondern eine stabile Basis, von der aus gestartet werden kann; einige oder vielleicht alle werden kommen.

Wie für die Roadmap? Nun, es gibt keine, von denen ich weiß, obwohl nach 1.0 sicher ist, ich lade Sie ein, Ihr Ohr auf den Boden zu halten.

+0

Danke! Ich werde auf jeden Fall hier bleiben, "Rost" soll meine Standard-Sprache werden, es scheint, worauf ich gewartet habe! – Byron

+0

@Byron: Zur Information, Nicht-Typ-Parameter kommen mit der [Pi-Typen-Trilogie] (https://github.com/rust-lang/rfcs/issues/1930), noch im RFC-Stadium. –

2

Während für Rust warten erstklassige Unterstützung für diese zu gewinnen, gibt es Kisten, die bestimmte Ebenen dieser Funktionalität, wie bieten:

Verwandte Themen