Travail pratique de programmation système avancée

Les coroutines et machines d’états

Objectifs

Énoncé

Généricité

Afin de vous familiariser avec la modélisation avec les coroutines, écrire une machine d’états avec trois états modélisant une requête GET qui constrituera votre coroutine. Vous devrez à l’aide de la coroutine effectuer trois requêtes GET concurrentes au delayserver qui se trouve sur le repo (chacune avec un delay différent) et les join() de façon concurrente.

Vous devez ainsi créer une struct JoinThree et une fonction join_three qui gèrera vos trois Future et leur complétion. Vous devez également implémenter le trait Future pour JoinThree permettant de poll() les trois Future. Finalement, votre main() devra ressembler à

fn main() {
    let start = Instant::now();
    let mut future = async_main();
    while let PollState::NotReady = future.poll() {}
    println!("Elapsed time: {}", start.elapsed().as_millis());
}