Как создать массив распакованных функций / замыканий?

Примечание редактора: этот вопрос задавался до Rust 1.0, и с тех пор некоторые синтаксис изменился, но основные концепции остаются. Некоторые ответы были обновлены для синтаксиса Rust 1.0.

Я новичок в Rust и пытаюсь что-то сделать с замыканиями, что тривиально в JavaScript, Python и т. Д., Но я сталкиваюсь с проблемами жизни в Rust. Я понимаю сообщение об ошибке, но оно заставляет меня поверить, что то, что я хочу сделать, довольно сложно в Rust.

Я просто хочу создать массив функций,aтакой, что

a[0] это функция, возвращающая 0a[1] это функция, возвращающая 1...a[9] это функция, возвращающая 9

Я старался:

fn main() {
    let a : [||->uint,  ..10];
    for i in range(0u, 10) {
        a[i] = ||{i};
    }
    println!("{} {} {}", a[1](), a[5](), a[9]())
}

Но я получил пожизненную ошибку. Сообщенная ошибка была «не может определить подходящий срок службы из-за противоречивых требований» для функций вa потому что жизни не могут пережитьwhile блокировать так, чтобы замыкания не могли пережить свой кадр стека, что, конечно, они бы сделали, потому что я вызываю их вprintln!.

Я уверен, что должен быть способ создать этот массив функций, но как?

Ответы на вопрос(2)

Ваш ответ на вопрос