Я хотел бы создать массив таких векторов, как этот
let v: [Vec<u8>; 10] = [Vec::new(); 10];
Однако компилятор дает мне эту ошибку:
ошибка: признак core::kinds::Copy не реализован для типа collections::vec::Vec<u8>
Ответ 1
Вы не можете использовать синтаксис инициализации [expr; N] для типов Copy из-за модели владения Rusts - он выполняет одно только одно выражение, а для типов Copy он не может просто скопировать байты N раз, они должны принадлежать только в одном месте.
Вам понадобится:
Запишите его явно десять раз: let v: [Vec<u8>; 10] = [vec![], vec![], vec![], vec![], vec![], vec![], vec![], vec![], vec![], vec![]] или
Используйте что-то вроде вектора вместо массива: std::iter::repeat(vec![]).take(10).collect::<Vec<_>>().
Ответ 2
Вы можете использовать черту Default для инициализации массива значениями по умолчанию: