我想创建一个这样的矢量数组
let v: [Vec<u8>; 10] = [Vec::new(); 10];
Run Code Online (Sandbox Code Playgroud)
但是,编译器给了我这个错误:
错误:
core::kinds::Copy该类型没有实现特征collections::vec::Vec<u8>
Chr*_*gan 13
你不能使用[expr; N]初始化语法非Copy类型,因为锈病的所有权模式,一次只执行的表达,而对于非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<_>>().
小智 6
您可以使用Default特征来使用默认值初始化数组:
let array: [Vec<u8>; 10] = Default::default();
Run Code Online (Sandbox Code Playgroud)
有关工作示例,请参见此游乐场。
| 归档时间: |
|
| 查看次数: |
4117 次 |
| 最近记录: |