Sto tentando di inizializzare un array di dimensioni fisse di un tipo annullabile, non copiabile, come un Option<Box<Thing>>
per un tipo di Thing
. Mi piacerebbe comprarne due in una struttura senza alcun riferimento indiretto. Mi piacerebbe scrivere qualcosa del genere:Inizializzazione di un array di dimensioni fisse di grandi dimensioni con tipi non di copia
let array: [Option<Box<Thing>>; SIZE] = [None; SIZE];
Ma non funziona perché la sintassi [e; n]
richiede che e
implementa Copy
. Naturalmente, potrei estenderlo in SIZE
None
s, ma questo può essere poco pratico quando SIZE
è grande. Non credo che questo possa essere fatto con una macro senza una codifica innaturale di SIZE
. C'è un buon modo per farlo?
Sì, questo è facile con unsafe
; c'è un modo per farlo senza unsafe
?
specificatamente per '[Opzione>; N] 'puoi usare transmute da a' [0; N] ': http://is.gd/CC31YQ –
Ho scritto una risposta a una domanda simile http://stackoverflow.com/questions/36925673/how-can-i-initialize-an-array-using-a- funzione – malbarbo