使用tinyvec时ArrayVec和Item均实现Copy仍报字段未实现Copy错误
问题核心原因
你遇到的报错根源是tinyvec库的Copy相关实现默认未启用:
tinyvec的ArrayVec类型的Copytrait实现被放在了可选的copy特性中,默认不会编译该实现- 哪怕你存储的
Item类型、底层数组[Item; 20]都实现了Copy,只要没有开启copy特性,ArrayVec<[Item; 20]>本身就不会实现Copy - 编译器为
Test自动派生Copy时会检查所有字段是否都实现了Copy,检测到nums字段不符合约束就会抛出对应报错
解决方案
有两种可选方案解决该问题:
- 如果你确实需要
Test实现Copy,只需要修改Cargo.toml中tinyvec的依赖配置,开启copy特性即可:tinyvec = { version = "1", features = ["copy"] } - 如果你当前场景不需要
Test实现Copy,直接删除Test派生列表中的Copy标识即可编译通过:// 修改后 #[derive(Clone)] struct Test { nums: ArrayVec<[Item; 20]> }
内容的提问来源于stack exchange,提问作者Owen Doyle
相关产品推荐
相关产品推荐

