Spec-Zone.ru › Tokio

Структура Interval

pub struct Interval { /* private fields */ }
Доступно только при включённой функции crate time.

Интервал, возвращаемый функциями interval и interval_at.

Этот тип позволяет ожидать последовательность моментов времени с заданной длительностью между ними. В отличие от вызова sleep в цикле, он также позволяет учитывать время, прошедшее между вызовами sleep.

Interval можно преобразовать в Stream с помощью IntervalStream.

Реализации

impl Interval

pub async fn tick(&mut self) -> Instant

Завершается, когда наступает следующий момент времени в интервале.

Безопасность отмены

Этот метод безопасен для отмены. Если tick используется как ветвь в tokio::select! и первой завершается другая ветвь, то ни один тик не был потреблён.

Примеры
use tokio::time;

use std::time::Duration;

let mut interval = time::interval(Duration::from_millis(10));

interval.tick().await;
// approximately 0ms have elapsed. The first tick completes immediately.
interval.tick().await;
interval.tick().await;

// approximately 20ms have elapsed.

pub fn poll_tick(&mut self, cx: &mut Context<'_>) -> Poll<Instant>

Ожидает наступления следующего момента времени в интервале.

Этот метод может вернуть следующие значения:

  • Poll::Pending, если следующий момент времени ещё не наступил.
  • Poll::Ready(instant), если следующий момент времени наступил.

Когда этот метод возвращает Poll::Pending, текущая задача планируется для пробуждения по истечении указанного времени. Обратите внимание, что при нескольких вызовах poll_tick пробуждение планируется только для Waker из Context, переданного при последнем вызове.

pub fn reset(&mut self)

Сбрасывает интервал так, чтобы он завершился через один период от текущего момента.

Этот метод игнорирует стратегию MissedTickBehavior.

Это эквивалентно вызову reset_at(Instant::now() + period).

Примеры
use tokio::time;

use std::time::Duration;

let mut interval = time::interval(Duration::from_millis(100));

interval.tick().await;

time::sleep(Duration::from_millis(50)).await;
interval.reset();

interval.tick().await;
interval.tick().await;

// approximately 250ms have elapsed.

pub fn reset_immediately(&mut self)

Немедленно сбрасывает интервал.

Этот метод игнорирует стратегию MissedTickBehavior.

Это эквивалентно вызову reset_at(Instant::now()).

Примеры
use tokio::time;

use std::time::Duration;

let mut interval = time::interval(Duration::from_millis(100));

interval.tick().await;

time::sleep(Duration::from_millis(50)).await;
interval.reset_immediately();

interval.tick().await;
interval.tick().await;

// approximately 150ms have elapsed.

pub fn reset_after(&mut self, after: Duration)

Сбрасывает интервал по истечении указанного значения std::time::Duration.

Этот метод игнорирует стратегию MissedTickBehavior.

Это эквивалентно вызову reset_at(Instant::now() + after).

Примеры
use tokio::time;

use std::time::Duration;

let mut interval = time::interval(Duration::from_millis(100));
interval.tick().await;

time::sleep(Duration::from_millis(50)).await;

let after = Duration::from_millis(20);
interval.reset_after(after);

interval.tick().await;
interval.tick().await;

// approximately 170ms have elapsed.

pub fn reset_at(&mut self, deadline: Instant)

Сбрасывает интервал на момент времени crate::time::Instant, соответствующий крайнему сроку.

Задаёт момент истечения следующего тика. Если указанный момент времени уже прошёл, для наверстывания будет использоваться стратегия MissedTickBehavior. Если указанный момент времени ещё не наступил, следующий тик завершится в этот момент, даже если для этого интервалу придётся ждать дольше, чем длится период этого Interval. Если у Interval были пропущенные тики до вызова этого метода, они отбрасываются.

Примеры
use tokio::time::{self, Instant};

use std::time::Duration;

let mut interval = time::interval(Duration::from_millis(100));
interval.tick().await;

time::sleep(Duration::from_millis(50)).await;

let deadline = Instant::now() + Duration::from_millis(30);
interval.reset_at(deadline);

interval.tick().await;
interval.tick().await;

// approximately 180ms have elapsed.

pub fn missed_tick_behavior(&self) -> MissedTickBehavior

Возвращает используемую в данный момент стратегию MissedTickBehavior.

pub fn set_missed_tick_behavior(&mut self, behavior: MissedTickBehavior)

Задаёт используемую стратегию MissedTickBehavior.

pub fn period(&self) -> Duration

Возвращает период интервала.

Реализации трейтов

impl Debug for Interval

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Форматирует значение с помощью указанного форматтера. Подробнее

Реализации автоматических трейтов

impl !RefUnwindSafe for Interval

impl !UnwindSafe for Interval

impl Freeze for Interval

impl Send for Interval

impl Sync for Interval

impl Unpin for Interval

impl UnsafeUnpin for Interval

Общие реализации

impl<T> Any for T
where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

Возвращает TypeId для self. Подробнее

impl<T> Borrow<T> for T
where T: ?Sized,

fn borrow(&self) -> &T

Неизменяемо заимствует данные из принадлежащего значения. Подробнее

impl<T> BorrowMut<T> for T
where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

Изменяемо заимствует данные из принадлежащего значения. Подробнее

impl<T> From<T> for T

fn from(t: T) -> T

Возвращает аргумент без изменений.

impl<T> Instrument for T

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью предоставленного Span и возвращает обёртку Instrumented. Подробнее

fn in_current_span(self) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью текущего Span и возвращает обёртку Instrumented. Подробнее

impl<T, U> Into<U> for T
where U: From<T>,

fn into(self) -> U

Вызывает U::from(self).

Иными словами, это преобразование выполняет то, что выберет реализация From<T> for U.

impl<T, U> TryFrom<U> for T
where U: Into<T>,

type Error = Infallible

Тип, возвращаемый в случае ошибки преобразования.

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Выполняет преобразование.

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error

Тип, возвращаемый в случае ошибки преобразования.

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Выполняет преобразование.

impl<T> WithSubscriber for T

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Присоединяет указанный Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Присоединяет текущий подписчик по умолчанию Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/time/struct.Interval.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API