РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1099 of 1245 menu

Вариант Pending класса Poll

Вариант Pending класса Poll используется в асинхронном программировании для обозначения состояния, когда операция ещё не готова вернуть результат. Он не содержит полезной нагрузки и сигнализирует о том, что выполнение задачи должно быть приостановлено до момента, когда она сможет продвинуться дальше. Вариант Pending обычно возвращается из метода poll трейта Future.

Синтаксис

Poll::Pending

Пример

Давайте создадим простую реализацию трейта Future, которая при первом опросе возвращает Poll::Pending, а при втором - Poll::Ready:

use std::future::Future; use std::pin::Pin; use std::task::{Context, Poll}; struct MyFuture { ready: bool, } impl Future for MyFuture { type Output = i32; fn poll(mut self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Self::Output> { if self.ready { Poll::Ready(42) } else { self.ready = true; Poll::Pending } } } fn main() { let mut fut = MyFuture { ready: false }; let mut cx = Context::from_waker(futures::task::noop_waker_ref()); let res1 = Pin::new(&mut fut).poll(&mut cx); println!("{:?}", res1); let res2 = Pin::new(&mut fut).poll(&mut cx); println!("{:?}", res2); }

Результат выполнения кода:

Pending Ready(42)

Пример

Давайте проверим, как вариант Pending можно сравнить с помощью matches!:

use std::task::Poll; fn main() { let res: Poll<i32> = Poll::Pending; if matches!(res, Poll::Pending) { println!("pending"); } else { println!("ready"); } }

Результат выполнения кода:

"pending"

Смотрите также

  • класс Poll,
    который представляет результат асинхронной операции
  • вариант Ready,
    который означает, что операция завершена и результат доступен
  • метод poll,
    который опрашивает будущее и возвращает Poll
  • класс Future,
    который представляет асинхронное вычисление
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить