Рантаймы
Рантайм обеспечивает выполнение операций асинхронно (реактор) и отвечает за выполнение фьючерсов (исполнитель). В Rust нет «встроенного» рантайма, но доступно несколько вариантов:
- Tokio: производительный, с хорошо развитой экосистемой функциональности, например Hyper для HTTP или Tonic для gRPC.
- smol: простой и лёгкий.
Некоторые крупные приложения имеют собственные рантаймы. Например, Fuchsia уже имеет такой.
-
Обратите внимание, что из перечисленных рантаймов в Rust Playground поддерживается только Tokio. Playground также не разрешает никакого ввода-вывода, поэтому большинство интересных асинхронных примеров там не запустятся.
-
Фьючерсы «инертны»: они ничего не делают (даже не начинают операцию ввода-вывода), пока исполнитель их не опрашивает. Это отличается, например, от JS Promise, который выполнится до конца, даже если его никто не использует.