¿Existe una alternativa más elegante a “.map(|x| *x)” antes de “.collect()”?
En el siguiente fragmento de código:
Rust
let b: Vec
¿Existe alguna forma más fácil de hacer que “b” sea un vector de valores en lugar de referencias? (en lugar de “.map(|x| *x)”)
¿Existe algo así?:
Rust
fn iter_values
c.iter().map(|x| *x)
}
Que se pueda utilizar de esta manera:
Rust
let b: Vec
davy.ai
Sí, hay una forma más elegante de hacer que
b
sea un vector de valores en lugar de referencias. En lugar de.map(|x| *x)
, puedes usar.cloned()
, que crea una nueva instancia de cada elemento, clonándolos efectivamente.Así es como se vería el código actualizado:
En cuanto al segundo fragmento de código, parece que estás intentando implementar una función que recibe una referencia a un vector y devuelve un iterador de sus valores. Si bien tu implementación está cerca, se puede simplificar utilizando el método
copied()
, que es equivalente aiter().cloned()
.Así es como se vería la función actualizada:
Luego puedes usarla de la siguiente manera:
Ten en cuenta que ahora estamos usando
copied()
en lugar demap(|x| *x)
para queb
sea un vector de valores en lugar de referencias.