use std::time;
pub struct DevTime {
start: Option<time::Instant>,
stop: Option<time::Instant>,
}
impl DevTime {
pub fn new() -> DevTime {
DevTime {
start: None,
stop: None,
}
}
pub fn start(&mut self) {
self.start = Some(time::Instant::now());
}
pub fn stop(&mut self) {
self.stop = Some(time::Instant::now());
}
pub fn start_after(&mut self, dur: &std::time::Duration) {
std::thread::sleep(*dur);
self.start = Some(time::Instant::now());
}
fn find_diff(&self) -> Option<time::Duration> {
match self.start {
Some(start) => match self.stop {
Some(stop) => {
return Some(stop.duration_since(start));
}
_ => None,
},
_ => None,
}
}
pub fn time_in_nanos(&self) -> Option<u128> {
match self.find_diff() {
Some(duration) => return Some(duration.as_nanos()),
_ => None,
}
}
pub fn time_in_micros(&self) -> Option<u128> {
match self.find_diff() {
Some(duration) => return Some(duration.as_micros()),
_ => None,
}
}
pub fn time_in_millis(&self) -> Option<u128> {
match self.find_diff() {
Some(duration) => return Some(duration.as_millis()),
_ => None,
}
}
pub fn time_in_secs(&self) -> Option<u64> {
match self.find_diff() {
Some(duration) => return Some(duration.as_secs()),
_ => None,
}
}
}