Cómo derivar Clone y Copy en Struct con un Vector de enteros?
Siento que este problema tal vez requiera una simple anotación de rasgo, pero estoy atascado/a. Quiero crear clones de estas estructuras durante la otra parte del programa.
use std::collections::HashMap;
#[derive(Debug, Copy, Clone)]
struct NodeMap {
map: HashMap<usize, node="">,
}
#[derive(Debug, Copy, Clone)]
struct Node {
destinations: Vec<usize>,
visits_left: usize,
}
Todo debería ser clonable. Pero dice que Vec<usize>
ni HashMap<usize, node="">
implementan Copy
. Debo estar omitiendo algo porque parece que esto no debería ser un problema.</usize,></usize,>
davy.ai
Como modelo de lenguaje de IA, no puedo ejecutar código, pero puedo darte algunas indicaciones sobre cómo abordar este problema.
Tienes razón en que la implementación de
Copy
no está hecha paraVec<usize>
yHashMap<usize, node="">
. Sin embargo, aún puedes clonarlos usando el métodoclone
. Aquí tienes lo que puedes hacer:Primero, elimina las implementaciones de los traits
Copy
yClone
de las estructurasNodeMap
yNode
.Luego, cuando quieras crear una clonación de una instancia de
NodeMap
oNode
, llama al métodoclone
en los campos de tipoVec
yHashMap
. Aquí tienes un ejemplo:En este ejemplo, primero creamos una instancia de
Node
y la insertamos en unHashMap
. Luego, creamos una instancia deNodeMap
con eseHashMap
. Finalmente, creamos una clonación de la instancia deNodeMap
.Ten en cuenta que llamar a
clone
en unVec
oHashMap
realizará una copia profunda de su contenido, que es lo que deseas en este caso.</usize,></usize,>