本文简要介绍rust语言中 Struct std::time::Instant
的用法。
用法
pub struct Instant(_);
对单调非递减时钟的测量。不透明且仅对 Duration
有用。
时刻总是保证在创建时不小于任何先前测量的时刻,并且对于诸如测量基准或计时操作需要多长时间等任务通常很有用。
但是请注意,不保证瞬间稳定的.换句话说,底层时钟的每个滴答声可能不是相同的长度(例如,有些秒可能比其他秒长)。瞬间可能会向前跳跃或经历时间膨胀(减速或加速),但它永远不会倒退。
瞬间是一种不透明的类型,只能相互比较。没有方法可以从瞬间获得“秒数”。相反,它只允许测量两个瞬间之间的持续时间(或比较两个瞬间)。
Instant
结构的大小可能因目标操作系统而异。
例子:
use std::time::{Duration, Instant};
use std::thread::sleep;
fn main() {
let now = Instant::now();
// we sleep for 2 seconds
sleep(Duration::new(2, 0));
// it prints '2'
println!("{}", now.elapsed().as_secs());
}
特定于操作系统的行为
Instant
是系统特定类型的包装器,它的行为可能因底层操作系统而异。例如,以下代码段在 Linux 上很好,但在 macOS 上会出现Panics:
use std::time::{Instant, Duration};
let now = Instant::now();
let max_nanoseconds = u64::MAX / 1_000_000_000;
let duration = Duration::new(max_nanoseconds, 0);
println!("{:?}", now + duration);
底层系统调用
目前,以下系统调用正在使用 now()
获取当前时间:
平台 | 系统调用 |
---|---|
SGX | insecure_time 用户调用.更多信息新交所的计时 |
UNIX | clock_gettime(单调时钟) |
Darwin | mach_absolute_time |
VXWorks | clock_gettime(单调时钟) |
SOLID | get_tim |
WASI | __wasi_clock_time_get(单调时钟) |
Windows | QueryPerformanceCounter |
免责声明:这些系统调用可能会随着时间而改变。
注意:如果底层结构不能代表新的时间点,像 add
这样的数学运算可能会出现Panics。
相关用法
- Rust Instant.checked_duration_since用法及代码示例
- Rust Instant.now用法及代码示例
- Rust Instant.saturating_duration_since用法及代码示例
- Rust Instant.duration_since用法及代码示例
- Rust Instant.elapsed用法及代码示例
- Rust IntoKeys用法及代码示例
- Rust IntoIter.as_mut_slice用法及代码示例
- Rust Infallible用法及代码示例
- Rust IntErrorKind用法及代码示例
- Rust Intersection用法及代码示例
- Rust IntoInnerError.error用法及代码示例
- Rust Into用法及代码示例
- Rust Incoming用法及代码示例
- Rust IntoIter.new用法及代码示例
- Rust Index用法及代码示例
- Rust IntoValues用法及代码示例
- Rust IntoIterator.into_iter用法及代码示例
- Rust IntoInnerError.into_inner用法及代码示例
- Rust IntoInnerError.into_parts用法及代码示例
- Rust IntoIter.as_slice用法及代码示例
- Rust IntoIterator用法及代码示例
- Rust IntoIter用法及代码示例
- Rust IntoRawFd.into_raw_fd用法及代码示例
- Rust IntoInnerError.into_error用法及代码示例
- Rust IntoInnerError用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Struct std::time::Instant。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。