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.

questionAnswers(1)

yourAnswerToTheQuestion