Источник: Документация futures-lite::future
Комбинаторы для трейта Future.
#![allow(unused)]
fn main() {
use futures_lite::future;
for step in 0..3 {
println!("step {}", step);
// Даем другим задачам шанс выполниться.
future::yield_now().await;
}
}
| Структура | Описание |
CatchUnwind | Фьючерс для метода FutureExt::catch_unwind() |
Or | Фьючерс для функции or() и метода FutureExt::or() |
Pending | Создает фьючерс, который никогда не разрешается, представляя вычисление, которое никогда не завершается |
PollFn | Фьючерс для функции poll_fn() |
PollOnce | Фьючерс для функции poll_once() |
Race | Фьючерс для функции race() и метода FutureExt::race() |
Ready | Фьючерс, который сразу готов со значением |
TryZip | Фьючерс для функции try_zip() |
YieldNow | Фьючерс для функции yield_now() |
Zip | Фьючерс для функции zip() |
| Трейт | Описание |
Future | Фьючерс представляет асинхронное вычисление, обычно получаемое с помощью async |
FutureExt | Трейт-расширение для Future |
| Функция | Описание |
block_on | Блокирует текущий поток на фьючерсе |
or | Возвращает результат фьючерса, который завершится первым, с предпочтением future1, если оба готовы |
pending | Создает фьючерс, который никогда не разрешается, представляя вычисление, которое никогда не завершается |
poll_fn | Создает фьючерс из функции, возвращающей Poll |
poll_once | Опрашивает фьючерс всего один раз и возвращает Option с результатом |
race | Возвращает результат фьючерса, который завершится первым, без предпочтений, если оба готовы |
race_with_seed | Соревнует два фьючерса, но с предопределенным случайным сидом |
ready | Создает фьючерс, который сразу готов со значением |
try_zip | Объединяет два фьючерса с возможностью ошибки, ожидая завершения обоих или ошибки одного из них |
yield_now | Будит текущую задачу и возвращает Poll::Pending один раз |
zip | Объединяет два фьючерса, ожидая завершения обоих |
| Псевдоним | Описание |
Boxed | Псевдоним типа для Pin<Box<dyn Future<Output = T> + Send + 'static>> |
BoxedLocal | Псевдоним типа для Pin<Box<dyn Future<Output = T> + 'static>> |