Una matrice a lunghezza fissa di tipo nativo (o di un tipo che implementa l'Copy
tratto) possono essere clonati in ruggine fino alla lunghezza di 32. Cioè, questo compila:Come clonare una matrice con una lunghezza maggiore di 32?
fn main() {
let source: [i32; 32] = [0; 32]; // length 32
let _cloned = source.clone();
}
Ma questo doesn 't:
fn main() {
let source: [i32; 33] = [0; 33]; // length 33
let _cloned = source.clone(); // <-- compile error
}
infatti, l'trait Clone
dichiara solo un metodo per ogni lunghezza generico array, da 0 a 32.
Qual è un modo efficiente e idiomatica clonare un generico array di lunghezza, dire , 33?
C'è una ragione per cui non è possibile utilizzare un 'Vec' in questo caso? – Shepmaster
Per tutti gli altri che eseguono "WTF", [ecco l'implementazione] (https://github.com/rust-lang/rust/blob/1.0.0/src/libcore/array.rs#L41) – remram