固定长度的本机类型数组(或实现Copy特征的类型)可以在Rust中克隆到32的长度.也就是说,这会编译:
fn main() {
let source: [i32; 32] = [0; 32]; // length 32
let _cloned = source.clone();
}
Run Code Online (Sandbox Code Playgroud)
但这不是:
fn main() {
let source: [i32; 33] = [0; 33]; // length 33
let _cloned = source.clone(); // <-- compile error
}
Run Code Online (Sandbox Code Playgroud)
实际上,traitClone只为每个通用数组长度声明一个方法,从0到32.
什么是克隆长度的通用数组的有效和惯用的方法,比如33?
小智 7
您无法impl Clone在自己的代码中添加.这个问题将在某个时刻得到解决,同时您可以通过不同的努力来解决这个问题:
Copy(如你的例子中),你可以简单地复制而不是克隆,即let _cloned = source;.Clone(并且derive将不起作用),您仍然可以在实现中手动实现Clone和使用上述技巧.Copy类型数组比较棘手,因为Clone可能会失败.你可以[x[0].clone(), x[1].clone(), ...]根据需要多次写出来,这是很多工作,但至少它肯定是正确的.Clone.| 归档时间: |
|
| 查看次数: |
1573 次 |
| 最近记录: |