Я пытаюсь инициализировать массив фиксированного размера некоторого типа NULL, не скопируемого типа, как Option<Box<Thing>>
для некоторого Thing
. Id нравится упаковывать два из них в структуру без какого-либо дополнительного обращения. Id нравится писать что-то вроде этого:
let array: [Option<Box<Thing>>; SIZE] = [None; SIZE];
Но это не работает, потому что синтаксис [e; n]
требует, чтобы e
реализовал Copy
. Конечно, я мог бы расширить его на SIZE
None
s, но это может быть громоздким, когда SIZE
велико. Я не верю, что это можно сделать с помощью макроса без неестественного кодирования SIZE
. Есть ли хороший способ сделать это?
Да, это легко с unsafe
; есть ли способ сделать это без unsafe
?