pub struct Instant { /* 私有字段 */ }展开描述
单调不减时钟的测量值。不透明,仅与 Duration 配合使用时有用。
在创建时,Instant 始终保证不小于任何先前测量的 Instant,并且通常用于测量基准测试或操作耗时之类的任务。
但请注意,Instant 不保证是稳定的。换句话说,底层时钟的每个 tick 长度可能不同(例如,某些秒可能比其他秒长)。Instant 可能会向前跳跃或经历时间膨胀(变慢或变快),但绝不会向后走。
Instant 是不透明类型,只能相互比较。没有方法可以从 Instant 获取"秒数"。相反,它只允许测量两个 Instant 之间的持续时间(或比较两个 Instant)。
Instant 结构体的大小可能因目标操作系统而异。
§注意
此类型包装内部的 std 变体,用于对齐 Tokio 时钟以用于 now()。这对于测试非常有用,你可以利用 time::pause() 和 time::advance()。
实现§
源代码§impl Instant
impl Instant
源代码pub fn duration_since(&self, earlier: Instant) -> Duration
pub fn duration_since(&self, earlier: Instant) -> Duration
返回从另一时刻到此刻所经过的时间量,如果该时刻晚于此刻,则返回零时长。
源代码pub 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)); // None源代码pub fn saturating_duration_since(&self, earlier: Instant) -> Duration
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
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);源代码pub 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。
源代码pub 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 实现§
源代码§impl AddAssign<Duration> for Instant
impl AddAssign<Duration> for Instant
源代码§fn add_assign(&mut self, rhs: Duration)
fn add_assign(&mut self, rhs: Duration)
+= operation. 更多信息源代码§impl Ord for Instant
impl Ord for Instant
源代码§impl PartialOrd for Instant
impl PartialOrd for Instant
源代码§impl SubAssign<Duration> for Instant
impl SubAssign<Duration> for Instant
源代码§fn sub_assign(&mut self, rhs: Duration)
fn sub_assign(&mut self, rhs: Duration)
-= operation. 更多信息