-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtime_measurer.rs
33 lines (28 loc) · 889 Bytes
/
time_measurer.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use std::time::Instant;
pub enum TimeMeasurer {
Normal { start: Instant, maximum_time_in_millis: u128 },
Infinite
}
impl TimeMeasurer {
pub fn new(maximum_time_in_millis: u128) -> Self {
Self::Normal {
start: Instant::now(),
maximum_time_in_millis
}
}
pub fn new_infinite() -> Self {
Self::Infinite
}
pub fn elapsed_millis_since_start(&self) -> u128 {
match self {
TimeMeasurer::Normal { start, maximum_time_in_millis: _ } => start.elapsed().as_millis(),
TimeMeasurer::Infinite => u128::max_value(),
}
}
pub fn has_time_left(&self) -> bool {
match self {
TimeMeasurer::Normal { start: _, maximum_time_in_millis } => self.elapsed_millis_since_start() < *maximum_time_in_millis,
TimeMeasurer::Infinite => true,
}
}
}