Ich schreibe eine NGram-Bibliothek in Rust. Ich möchte ein 'generisches' Ngram erstellen, in dem die Größe nicht vor der Kompilierungszeit bestimmt werden muss (im Gegensatz zu dem, wenn ich es kodiere). Ein kleiner Code könnte dazu beitragen, dies zu verdeutlichen. HierErstellen Sie einen generischen Typ, der durch eine Nummer parametrisiert wird
ist im Grunde, was ich in der Lage sein zu tun:
pub type Ngram<N> = Vec<[String; N]>;
und dann, es zu benutzen, geben Sie einfach etwas tun, wie folgt aus:
let vec = Ngram::<5>::new();
Und Sie würden eine fünf angelegt haben -Gramm (oder genauer gesagt Vec<[String; 5]>
). Ist so etwas möglich? Ich möchte wirklich so etwas nicht machen:
pub type Ngram<N> = Vec<N>;
...
let vec = Ngram::<[String; 5]>::new();
Das würde meist den Zweck der Schaffung des Typs besiegen.
Es kann jedoch möglich sein, das Äquivalent durch Schreiben eines Makros zu erreichen, wie bei der Standardversion vec! – trentcl
@trentcl Ja, ich denke, das muss ich tun. Ich habe auch https://github.com/rust-lang/rfcs/issues/1038 gefunden, was genau das zu sein scheint, worüber ich spreche. Hoffentlich wird es eines Tages umgesetzt. – wmaxlees
@dobafresh: Es ist sehr erwünscht und eng mit der Auswertung der Kompilierzeitfunktion verbunden (da nur rohe Zahlen ohne die Fähigkeit, sie zu modifizieren, nicht so nützlich sind). –