Is there a way to collect primitive values, instead of references? For example, I have the following function:
fn test() -> Vec<i32> {
let items: Vec<i32> = (0..10).collect();
let items: Vec<&i32> = items.iter().collect();
let items: Vec<&&i32> = items.iter().collect();
let items: Vec<&&&i32> = items.iter().collect();
let items: Vec<&&&&i32> = items.iter().collect();
// I would like to write something like:
// items.iter().deep_copied().collect()
items.iter().map(|&&&&&x| x).collect()
}
I would like to write something like items.iter().deep_copied().collect(), instead of destructuring the variable again and again. Is there any idiomatic way to do this?
The idiomatic way is to avoid && in the first place, since it doesn't add any functionality, only overhead. So keep calling .copied() earlier.
let items: Vec<i32> = (0..10).collect();
let items: Vec<&i32> = items.iter().collect();
let items: Vec<&i32> = items.iter().copied().collect();
let items: Vec<&i32> = items.iter().copied().collect();
let items: Vec<&i32> = items.iter().copied().collect();