Avatar ·

Como coletar elementos de um iterador em um array de tamanho fixo em Rust?

Olá a todos! Recentemente comecei a estudar Rust e me deparei com um problema que parece muito simples, mas não consigo encontrar a solução correta.

Tenho um iterador que retorna uma sequência de números. Quero coletar todos esses números em um array [i32; N], onde N é conhecido em tempo de compilação. Por exemplo, estou escrevendo uma função que recebe uma slice de números e retorna um array com os primeiros 5 elementos:

fn first_five(data: &[i32]) -> [i32; 5] {
    data.iter().take(5).collect() // não funciona!
}

O compilador emite um erro: the trait bound `[i32; 5]: FromIterator<&i32>` is not satisfied. Entendo que collect() funciona com coleções como Vec, mas como fazer funcionar com arrays?

Tentei