Sto cercando di inizializzare un array di struct a Rust con il seguente frammento di codice:Come si implementa il tratto Copia?
enum Direction {
North,
East,
South,
West,
}
struct RoadPoint {
direction: Direction,
index: i32,
}
let data = [RoadPoint { direction: Direction::East, index: 1 }; 4]; // Initialise the array, but failed.
Quando compilo esso, lamenta il fatto che il tratto Copy
non è implementata.
<anon>:44:16: 44:67 error: the trait `core::marker::Copy` is not implemented for the type `main::RoadPoint` [E0277]
<anon>:44 let data = [RoadPoint { direction: Direction::East, index: 1 }; 4];
Qualcuno può indicarmi la giusta direzione per implementare un tratto di copia?
'# [derive (Clone, Copy)]' è la strada giusta, ma per la cronaca, non è magico: è facile implementare queste caratteristiche manualmente, specialmente in casi facili come il tuo: 'impl Copy for Direction { } impl Clone for Direction {fn clone (& self) -> Self {* self}} ' – delnan
@delnan Anche se è breve, penso che meriti di essere una risposta qui sotto. È totalmente valido – Shepmaster