Sto scrivendo una libreria NGram in Rust. Voglio creare un 'generico' ngram in cui la dimensione non debba essere determinata fino al momento della compilazione (a differenza di quando la codifico). Un piccolo codice potrebbe aiutare a chiarirlo.Creare un tipo generico parametrizzato da un numero
Qui è fondamentalmente quello che io voglio essere in grado di fare:
pub type Ngram<N> = Vec<[String; N]>;
e poi usarlo, è sufficiente fare qualcosa di simile:
let vec = Ngram::<5>::new();
e si sarebbe creato un cinque -gram (o più precisamente, un Vec<[String; 5]>
). È qualcosa di simile possibile. Io davvero non voglio fare qualcosa di simile:
pub type Ngram<N> = Vec<N>;
...
let vec = Ngram::<[String; 5]>::new();
Questo sarebbe in gran parte vanificato l'obiettivo di creare il tipo.
Tuttavia, potrebbe essere possibile ottenere l'equivalente scrivendo una macro, come con lo standard vec! – trentcl
@trentcl Sì, penso che sia quello che dovrò fare. Ho anche trovato https://github.com/rust-lang/rfcs/issues/1038 che sembra essere esattamente quello di cui sto parlando. Spero che un giorno venga implementato. – wmaxlees
@dobafresh: È molto desiderato ed è intimamente collegato alla valutazione della funzione in fase di compilazione (poiché avere solo numeri non elaborati senza la possibilità di modificarli non è altrettanto utile). –