有谁知道这里发生了什么?为什么我得到
此字段未实现
Copy
use tinyvec::ArrayVec;
#[derive(Copy, Clone)]
struct Item {
num: i32
}
#[derive(Copy, Clone)]
struct Test {
nums: ArrayVec<[Item; 20]>
}
fn main() {
let mut x = Test {
nums: ArrayVec::new()
};
}
Run Code Online (Sandbox Code Playgroud)
kmd*_*eko 11
Copy为实现ArrayVec有以下限制:
impl<A> Copy for ArrayVec<A> where
A: Array + Copy,
A::Item: Copy,
{}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,A是[Item; 20],因此它实现Copy。然而,[Item; 20] 并不满足约束条件来实现Array。
impl<T: Default> Array for [T; 20] {
// ^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
对于[Item; 20]是一个Array,Item需要实现Default。