butt_head/time.rs
1/// Abstraction for a duration of time.
2pub trait TimeDuration: Copy + PartialEq + 'static {
3 const ZERO: Self;
4 fn as_millis(&self) -> u64;
5 fn from_millis(millis: u64) -> Self;
6 fn saturating_sub(self, other: Self) -> Self;
7}
8
9/// Abstraction for a point in time.
10pub trait TimeInstant: Copy + PartialEq {
11 type Duration: TimeDuration;
12 fn duration_since(&self, earlier: Self) -> Self::Duration;
13 fn checked_add(self, duration: Self::Duration) -> Option<Self>;
14 fn checked_sub(self, duration: Self::Duration) -> Option<Self>;
15}