Skip to content
Snippets Groups Projects
instant_desktop.rs 548 B
Newer Older
Louis's avatar
Louis committed
use std::ops::Sub;
use std::time::{Duration, Instant};

#[derive(Copy, Clone, PartialEq, PartialOrd, Debug)]
pub struct Spot {
	inner: Instant,
}

impl Spot {
	pub fn now() -> Self {
		Spot {
			inner: Instant::now(),
		}
	}
	pub fn as_secs(&self) -> u64 {
		self.as_duration().as_secs()
	}
	pub fn as_duration(&self) -> Duration {
		self.inner.elapsed()
	}

	pub fn elapsed(&self) -> Duration {
		self.as_duration()
	}
}

impl Sub<Spot> for Spot {
	type Output = Duration;

	fn sub(self, rhs: Spot) -> Self::Output {
		self.inner - rhs.inner
	}
}