Aller plus loin
L’écosystème asynchrone de Rust est vaste et en expansion rapide. Voici quelques suggestions de ressources à explorer pour en savoir plus :
- Ce chapitre doit beaucoup au petit e-book Asynchronous Programming in Rust, que je vous encourage à lire en entier plutôt que de vous contenter de mon résumé.
tokio
est loin d’être le seul runtime asynchrone disponible, même si c’est le plus populaire.- Du côté des runtimes généralistes, vous pourriez aussi essayer
async-std
etsmol
. - Pour plus de tolérance aux pannes,
bastion
pourrait vous intéresser. - Si vous faites de l’embarqué, les tâches asynchrones sont une alternative
assez populaire à l’utilisation d’un OS embarqué complet. Voir par exmeple
embassy
. - Et si vous avez affaire à une de ces bibliothèques qui vous embêtent à
fournir des fonctions asynchrones alors que vous voulez écrire du code
synchrone, l’implémentation
block_on()
la plus minimale que vous pouvez trouver est probablementpollster
.
- Du côté des runtimes généralistes, vous pourriez aussi essayer
- Les programmes qui exécutent des tâches indépendantes de façon concurrente
tendent à produire des logs difficiles à lire, où les événements associés à
différentes tâches sont entrelacés. La crate
tracing
tente de rendre les logs plus faciles à interpréter grâce à une approche de logging plus structurée. - Les runtimes comme
tokio
ne vous fournissent que des entrées/sorties bas niveau, comme leTcpStream
de la bibliothèque standard. A plus haut niveau, vous pourriez essayer…hyper
pour communiquer en HTTP, en combinaison avec une implémentation TLS commerustls
pour le HTTPS.- Des surcouches spécialisées de
hyper
commereqwest
si vous voulez juste faire des requêtes ouaxum
si vous voulez écrire un serveur web. tokio-uring
si vous voulez essayer la nouvelle interfaceio-uring
du noyau linux, qui permet de faire des entrées/sorties disque asynchrones aussi efficaces que les entrées/sorties réseau asynchrones.