Por que os fechamentos de iteradores aninhados não copiam valores do escopo externo
Estou tentando usar iteradores aninhados, onde o iterador interno usa valor do iterador externo.
vec![0;10].iter().flat_map(|&a| {
(0..10).map(|b|{
a + b
})
});
erro:a
não vive o suficiente
(0..10).map(|b|{
^^^
nota: a referência deve ser válida para a chamada do método ...
Isso compila se eu mover o fechamento interno (move |b|{
), mas não entendo por que é necessário, dado quea
é um número inteiro e poderia ter sido copiado em vez de movido.