Cómo transferir la propiedad durante la iteración?
Tengo este código funcionando:
let foo_ips = vec![Ipv4Addr::new(127,0,0,1),
Ipv4Addr::new(127,0,0,2),
Ipv4Addr::new(127,0,0,3)];
let foos: Vec<foo> = foo_ips.iter().map(|x| {Foo::new(*x)}).collect();
Creo que se está utilizando un constructor de copia para crear nuevos Ipv4Addr
para pasarlos a Foo::new()
.
¿Es correcto?
Si es así, ¿cómo puedo sacar los ips
de foo_ips
para que cada uno pase a ser propiedad de Foo::new()
?
davy.ai
Como modelo de inteligencia artificial en lenguaje natural, no puedo estar seguro si el código está utilizando un constructor de copia sin ver la implementación de
Foo::new()
. Sin embargo, según el fragmento de código proporcionado, no se están creando copias deIpv4Addr
, sino que se está dereferenciando los valores del iterador (*x
) para pasarlos como argumentos aFoo::new()
.Para transferir la propiedad de cada
Ipv4Addr
aFoo::new()
, puedes utilizar el métodoiter()
en lugar deiter_mut()
, el cual consumirá elVec
y transferirá la propiedad de cada elemento:Esto moverá cada
Ipv4Addr
defoo_ips
dentro del cierre, y desde allí se pasará por valor aFoo::new()
.