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

Вариант Ready

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

Синтаксис

Poll::Ready(value)

Пример

Давайте создадим простую реализацию Future, которая всегда завершается сразу и возвращает число:

use std::future::Future; use std::task::{Context, Poll}; use std::pin::Pin; struct ReadyFuture; impl Future for ReadyFuture { type Output = i32; fn poll(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<i32> { Poll::Ready(42) } } fn main() { let mut future = ReadyFuture; let mut cx = Context::from_waker(std::task::Waker::noop()); let res = Pin::new(&mut future).poll(&mut cx); match res { Poll::Ready(v) => println!("Ready: {}", v), Poll::Pending => println!("Pending"), } }

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

"Ready: 42"

Пример

Давайте напишем функцию, которая возвращает Poll в зависимости от входного условия:

use std::task::Poll; fn check_ready(value: bool) -> Poll<i32> { if value { Poll::Ready(100) } else { Poll::Pending } } fn main() { let res = check_ready(true); match res { Poll::Ready(v) => println!("Done: {}", v), Poll::Pending => println!("Not yet"), } }

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

"Done: 100"

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

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