Por qué los cierres de iterador anidados no copiarán valores del ámbito externo
Estoy tratando de usar iteradores anidados, donde el iterador interno usa el valor del iterador externo.
vec![0;10].iter().flat_map(|&a| {
(0..10).map(|b|{
a + b
})
});
error:a
no vive lo suficiente
(0..10).map(|b|{
^^^
nota: la referencia debe ser válida para la llamada al método ...
Esto se compila si muevo el cierre interno (move |b|{
), pero no entiendo por qué es necesario, dado quea
es un número entero y podría haberse copiado en lugar de haberse movido.