Rust标准库(时间)

时间库常见的对象

  • Duration:代表时间跨度的类型,通常的用法是超时统计。
  • Instant:纳秒单位的时钟。
  • SystemTime:系统时钟。
  • SystemTimeErro:系统时钟错误。
  • TryFromFloatSecsError:转换浮点数为Duration时的报错。

Duration时间

  • Duration = Duration::new(u64::MAX, NANOS_PER_SEC - 1):获取最大时间Duration。
  • fn new(secs: u64, nanos: u32) -> Duration:创建一个特定值的Duration。
  • fn from_secs(secs: u64) -> Duration:创建特定秒数的Duration。
  • from_millis(millis: u64) -> Duration:创建特定毫秒数的Duration。
  • from_micros(micros: u64) -> Duration:指定特定微妙数的Duration。
  • from_nanos(nanos: u64) -> Duration:创建特定纳秒数的Duration。
  • is_zero(&self) -> bool:返回Duration是否为0。
  • as_secs(&self) -> u64:转换Duration为秒数。
  • subsec_millis(&self) -> u32:转换除去首位后剩余部分为毫秒数,比如4.321秒,输出为321。
  • subsec_micros(&self) -> u32:转换为微秒单位后除去首位之后的微秒数,比如1.234567s,输出234567。
  • fn as_millis(&self) -> u128:转换为纳秒单位后取出首位之后剩余的纳秒数,比如1001000123。
  • fn subsec_nanos(&self) -> u32:转换为纳秒单位后,原先小数部分转换为纳秒单位。
  • as_millis(&self) -> u128:返回单位为微妙数后小数部分转换为微秒数。
  • as_micros(&self) -> u128:返回小数部分转换为毫秒之后的数值。
  • as_nanos(&self) -> u128:转换小数部分为纳米之后的数值。
  • checked_add(self, rhs: Duration) -> Option<Duration>:检查加法,如果饱和值溢出则返回None否则返回计算值。
  • saturating_add(self, rhs: Duration) -> Duration:饱和值加法,如果溢出则返回饱和值。
  • checked_sub(self, rhs: Duration) -> Option<Duration>:检查减法,如果溢出则返回None否则返回计算值。
  • saturating_sub(self, rhs: Duration) -> Duration:饱和值减法,如果溢出则返回饱和值否则返回计算值。
  • checked_mul(self, rhs: u32) -> Option<Duration>:饱和值乘法,如果溢出则返回None否则返回计算值。
  • saturating_mul(self, rhs: u32) -> Duration:饱和值乘法,如果语出则返回饱和值否则返回计算值。
  • checked_div(self, rhs: u32) -> Option<Duration>:检查除法,如果被除数为0则返回None,否则返回计算值。
  • as_secs_f64(&self) -> f64:返回Duration包含的秒数,fp64输出。
  • as_secs_f32(&self) -> f32:返回Duration包含的秒数,fp32输出。
  • from_secs_f64(secs: f64) -> Duration:从fp64秒构建Duration。
  • from_secs_f32(secs: f32) -> Duration:从fp32秒构建Duration。
  • mul_f64(self, rhs: f64) -> Duration:Duration乘以rhs(fp32)返回Duration。
  • mul_f32(self, rhs: f32) -> Duration:Duration乘以rhs(fp64)返回Duration。
  • div_f64(self, rhs: f64) -> Duration:Duration除以rhs(fp64)返回Duration。
  • div_f32(self, rhs: f32) -> Duration:Duration除以rhs(fp32)返回Duration。
  • div_duration_f64(self, rhs: Duration) -> f64:Duration除以另一个Durationrhs返回f64结果(实验接口)。
  • div_duration_f32(self, rhs: Duration) -> f32:Duration除以另一个Durationrhs返回f32结果(实验接口)。
  • try_from_secs_f32(secs: f32) -> Result<Duration, TryFromFloatSecsError>:from_secs_f32的检查版本,如果secs为负数、溢出或则无限则返回Err。
  • try_from_secs_f64(secs: f64) -> Result<Duration, TryFromFloatSecsError>:from_secs_f64的检查版本,如果secs为负数、溢出或者无限则返回Err。
use std::time::Duration;
fn main() {
    let five_second = Duration::from_secs(5);
    let five_nanosecond = Duration::from_nanos(5);
    println!(
        "5 second = {:?} 5 nano second = {:?}",
        five_second, five_nanosecond
    );
    assert_eq!(Duration::MAX, Duration::new(u64::MAX, 1000_000_000 - 1));
    let five_second_new = Duration::new(5, 0);
    let five_mili = Duration::from_millis(5);
    println!(
        "acc time = {:?} five 毫秒 = {:?}",
        five_second_new, five_mili
    );
    assert!(Duration::new(0, 0).is_zero());
    assert!(Duration::new(5, 100).as_secs() == 5);
    assert!(Duration::from_millis(5432).subsec_millis() == 432);
    assert_eq!(Duration::from_millis(5010).subsec_nanos(), 1000_000_0);
}

Instant

常见方法

  • now() -> Instant:返回一个对应当前的Instant。
  • duration_since(&self, earlier: Instant) -> Duration:返回相对一另一个Instant流失了多少时间的Duration,如果当前Instant晚于另一个时间则返回0。
  • checked_duration_since(&self, earlier: Instant) -> Option<Duration>:检查版本的duration_since,monotonicity bugs将导致结果为None。
  • saturating_duration_since(&self, earlier: Instant) -> Duration:返回Instant相较于另一个Instant流失的时间,如果当前Instant晚于另一个时间则返回0。
  • elapsed(&self) -> Duration:返回流失了多少时间。
  • checked_add(&self, duration: Duration) -> Option<Instant>:返回当前Instant+Instant之后的结果(越界则为None)。
  • checked_sub(&self, duration: Duration) -> Option<Instant>:返回当前Instant-Instan之后的结果(越界则为None)。
  • ``

   转载规则


《Rust标准库(时间)》 bleedingfight 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
rust三方库(rayon) rust三方库(rayon)
Rayon子模块 array:对arrays ([T; N])并发迭代器。 collections:针对 standard collections的并发迭代器 iter:使用迭代器风格的并发程序trait。 option: option类型
2023-09-16
下一篇 
  目录