Ein fester Länge Array eines nativen Typ (oder von einem Typ, der das Merkmal implementiert Copy
) kann auf die Länge 32, die bis in Rust geklont werden soll, diese kompiliert:Wie klont man ein Array mit einer Länge größer als 32?
fn main() {
let source: [i32; 32] = [0; 32]; // length 32
let _cloned = source.clone();
}
Aber dieses doesn ‚t:
fn main() {
let source: [i32; 33] = [0; 33]; // length 33
let _cloned = source.clone(); // <-- compile error
}
In der Tat erklärt die trait Clone
nur eine Methode für jede generische Arraylänge von 0 bis 32.
Was eine effiziente und idiomatische Weise ist eine allgemeine Anordnung von Länge zu klonen, sagen , 33?
Gibt es einen Grund, dass Sie in diesem Fall kein 'Vec' verwenden können? – Shepmaster
Für alle anderen, die "WTF" gehen, [hier ist die Implementierung] (https://github.com/rust-lang/rust/blob/1.0.0/src/libcore/array.rs#L41) – remram