Структура 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 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)); // Nonepub 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 AddAssign<Duration> for Instant
fn add_assign(&mut self, rhs: Duration)
+=. Подробнее
impl Copy for Instant
impl Eq for Instant
impl Ord for Instant
fn max(self, other: Self) -> Selfwhere Self: Sized,
impl PartialOrd for Instant
impl StructuralPartialEq for Instant
Реализации автоматических трейтов
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> BorrowMut<T> for Twhere T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Twhere T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)
impl<T> Instrument for T
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
impl<T> ToOwned for Twhere T: Clone,
type Owned = T
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)
impl<T> WithSubscriber for T
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
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