Spec-Zone.ru › Tokio

Структура Instant

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

Измерение монотонно неубывающих часов. Непрозрачный тип, полезный только вместе с Duration.

Гарантируется, что созданный момент времени всегда будет не раньше любого ранее измеренного момента. Часто он полезен для таких задач, как измерение производительности или определение времени выполнения операции.

Однако обратите внимание: не гарантируется, что ход времени будет равномерным. Иными словами, каждый тик базовых часов может иметь разную продолжительность (например, одни секунды могут быть длиннее других). Момент времени может перескочить вперёд или испытывать замедление либо ускорение времени, но никогда не пойдёт назад.

Моменты времени — это непрозрачные типы, которые можно сравнивать только друг с другом. Не существует метода, позволяющего получить «количество секунд» из момента времени. Вместо этого можно только измерить длительность между двумя моментами времени (или сравнить два момента).

Размер структуры Instant может различаться в зависимости от целевой операционной системы.

Примечание

Этот тип оборачивает внутренний вариант std и используется для синхронизации часов Tokio при использовании now(). Это может быть полезно при тестировании, когда можно воспользоваться time::pause() и time::advance().

Реализации

impl Instant

pub fn now() -> Instant

Возвращает момент времени, соответствующий «сейчас».

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

let now = Instant::now();

pub fn from_std(std: Instant) -> Instant

Создаёт tokio::time::Instant из std::time::Instant.

pub fn into_std(self) -> Instant

Преобразует значение в std::time::Instant.

pub fn duration_since(&self, earlier: Instant) -> Duration

Возвращает время, прошедшее от другого момента времени до этого, или нулевую длительность, если тот момент наступил позже этого.

pub fn checked_duration_since(&self, earlier: Instant) -> Option<Duration>

Возвращает время, прошедшее от другого момента времени до этого, или None, если тот момент наступил позже этого.

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

let now = Instant::now();
sleep(Duration::new(1, 0)).await;
let new_now = Instant::now();
println!("{:?}", new_now.checked_duration_since(now));
println!("{:?}", now.checked_duration_since(new_now)); // None

pub fn saturating_duration_since(&self, earlier: Instant) -> Duration

Возвращает время, прошедшее от другого момента времени до этого, или нулевую длительность, если тот момент наступил позже этого.

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

let now = Instant::now();
sleep(Duration::new(1, 0)).await;
let new_now = Instant::now();
println!("{:?}", new_now.saturating_duration_since(now));
println!("{:?}", now.saturating_duration_since(new_now)); // 0ns
}

pub fn elapsed(&self) -> Duration

Возвращает время, прошедшее с момента создания этого объекта, или нулевую длительность, если этот момент времени находится в будущем.

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

let instant = Instant::now();
let three_secs = Duration::from_secs(3);
sleep(three_secs).await;
assert!(instant.elapsed() >= three_secs);

pub fn checked_add(&self, duration: Duration) -> Option<Instant>

Возвращает Some(t), где t — это время self + duration, если t может быть представлено как Instant (то есть находится в пределах диапазона базовой структуры данных), и None в противном случае.

pub fn checked_sub(&self, duration: Duration) -> Option<Instant>

Возвращает Some(t), где t — это время self - duration, если t может быть представлено как Instant (то есть находится в пределах диапазона базовой структуры данных), и None в противном случае.

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

impl Add<Duration> for Instant

type Output = Instant

Тип результата после применения оператора +.

fn add(self, other: Duration) -> Instant

Выполняет операцию +. Подробнее

impl AddAssign<Duration> for Instant

fn add_assign(&mut self, rhs: Duration)

Выполняет операцию +=. Подробнее

impl Clone for Instant

fn clone(&self) -> Instant

Возвращает копию значения. Подробнее
1.0.0 (const: unstable) ·

fn clone_from(&mut self, source: &Self)

Выполняет копирующее присваивание из source. Подробнее

impl Copy for Instant

impl Debug for Instant

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

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

impl Eq for Instant

impl From<Instant> for Instant

fn from(time: Instant) -> Instant

Преобразует входное значение в этот тип.

impl From<Instant> for Instant

fn from(time: Instant) -> Instant

Преобразует входное значение в значение этого типа.

impl Hash for Instant

fn hash<__H: Hasher>(&self, state: &mut __H)

Передаёт это значение указанному Hasher. Подробнее
1.3.0 ·

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Передаёт срез этого типа указанному Hasher. Подробнее

impl Ord for Instant

fn cmp(&self, other: &Instant) -> Ordering

Этот метод возвращает значение Ordering для сравнения self и other. Подробнее
1.21.0 (const: unstable) ·

fn max(self, other: Self) -> Self
where Self: Sized,

Сравнивает два значения и возвращает большее. Подробнее
1.21.0 (const: unstable) ·

fn min(self, other: Self) -> Self
where Self: Sized,

Сравнивает два значения и возвращает меньшее. Подробнее
1.50.0 (const: unstable) ·

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Ограничивает значение заданным интервалом. Подробнее

impl PartialEq for Instant

fn eq(&self, other: &Instant) -> bool

Оператор равенства ==. Подробнее
1.0.0 (const: unstable) ·

fn ne(&self, other: &Rhs) -> bool

Оператор неравенства !=. Подробнее

impl PartialOrd for Instant

fn partial_cmp(&self, other: &Instant) -> Option<Ordering>

Этот метод возвращает порядок между значениями self и other, если он существует. Подробнее
1.0.0 (const: unstable) ·

fn lt(&self, other: &Rhs) -> bool

Проверяет, меньше ли (для self и other), и используется оператором <. Подробнее
1.0.0 (const: unstable) ·

fn le(&self, other: &Rhs) -> bool

Проверяет, меньше ли или равно (для self и other), и используется оператором <=. Подробнее
1.0.0 (const: unstable) ·

fn gt(&self, other: &Rhs) -> bool

Проверяет, больше ли (для self и other), и используется оператором >. Подробнее
1.0.0 (const: unstable) ·

fn ge(&self, other: &Rhs) -> bool

Проверяет, больше ли или равно (для self и other), и используется оператором >=. Подробнее

impl StructuralPartialEq for Instant

impl Sub for Instant

type Output = Duration

Тип результата после применения оператора -.

fn sub(self, rhs: Instant) -> Duration

Выполняет операцию -. Подробнее

impl Sub<Duration> for Instant

type Output = Instant

Тип результата после применения оператора -.

fn sub(self, rhs: Duration) -> Instant

Выполняет операцию -. Подробнее

impl SubAssign<Duration> for Instant

fn sub_assign(&mut self, rhs: Duration)

Выполняет операцию -=. Подробнее

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

impl Freeze for Instant

impl RefUnwindSafe for Instant

impl Send for Instant

impl Sync for Instant

impl Unpin for Instant

impl UnsafeUnpin for Instant

impl UnwindSafe for Instant

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

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> CloneToUninit for T
where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬Это экспериментальный API, доступный только в nightly-сборке. (clone_to_uninit)
Выполняет копирующее присваивание из self в dest. Подробнее

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> ToOwned for T
where T: Clone,

type Owned = T

Тип результата после получения владения.

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

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.Instant.html

Spec-Zone.ru

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