pub struct Instant { /* private fields */ }展开描述
单调递增时钟的度量值。
类型不透明,只能与 Duration 配合使用。
Instant 在创建时始终保证不小于任何先前已测量的 instant,常用于度量基准性能或计时某个操作所耗时长等任务。
但请注意,instant 不保证是稳定的。换言之,底层时钟的每一跳长度可能并不相同(例如某些秒可能比其他秒更长)。一个 instant 可能会向前跳跃或发生时间膨胀(变慢或变快),但绝不会倒退。
Instant 是不透明类型,只能彼此之间进行比较。没有方法可以从 instant 中获取“秒数”。它仅允许度量两个 instant 之间的时长(或比较两个 instant)。
Instant 结构体的大小可能因目标操作系统不同而有所不同。
§Note
此类型是对内部 std 类型的封装,用于对齐 Tokio 时钟以供 now() 调用。这在测试场景下非常有用,因为你可以使用 time::pause() 与 time::advance()。
实现§
Source§impl Instant
impl Instant
Sourcepub fn duration_since(&self, earlier: Instant) -> Duration
pub fn duration_since(&self, earlier: Instant) -> Duration
返回从另一 instant 到此 instant 之间所经过的时间,如果另一 instant 晚于此 instant,则返回零时长。
Sourcepub fn checked_duration_since(&self, earlier: Instant) -> Option<Duration>
pub fn checked_duration_since(&self, earlier: Instant) -> Option<Duration>
返回从另一 instant 到此 instant 之间所经过的时间,如果另一 instant 晚于此 instant,则返回 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)); // NoneSourcepub fn saturating_duration_since(&self, earlier: Instant) -> Duration
pub fn saturating_duration_since(&self, earlier: Instant) -> Duration
返回从另一 instant 到此 instant 之间所经过的时间,如果另一 instant 晚于此 instant,则返回零时长。
§示例
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
}Sourcepub fn elapsed(&self) -> Duration
pub fn elapsed(&self) -> Duration
返回自此 instant 创建以来所经过的时间,如果此 instant 处于未来,则返回零时长。
§示例
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);Sourcepub fn checked_add(&self, duration: Duration) -> Option<Instant>
pub fn checked_add(&self, duration: Duration) -> Option<Instant>
如果 t 可以表示为 Instant(即它处于底层数据结构的表示范围内),则返回 Some(t),其中 t 是时间 self + duration;否则返回 None。
Sourcepub fn checked_sub(&self, duration: Duration) -> Option<Instant>
pub fn checked_sub(&self, duration: Duration) -> Option<Instant>
如果 t 可以表示为 Instant(即它处于底层数据结构的表示范围内),则返回 Some(t),其中 t 是时间 self - duration;否则返回 None。
Trait 实现§
Source§impl AddAssign<Duration> for Instant
impl AddAssign<Duration> for Instant
Source§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. 更多信息Source§impl Ord for Instant
impl Ord for Instant
Source§impl PartialOrd for Instant
impl PartialOrd for Instant
Source§impl SubAssign<Duration> for Instant
impl SubAssign<Duration> for Instant
Source§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. 更多信息