Really we should make this more pervasive, but this is what we need
right now.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
pub fn cooldown_remaining(&self, state: &State) -> Duration {
let expires = &state.cooldown_expires;
if_let!{ Some(FutureInstant(then)) = *expires; else return Ok(default()) };
- let now = Instant::now();
+ let now = config().global_clock.now();
if now > then { return default() }
let remaining = then - now;
if remaining > self.cooldown_time {
impl Into<Duration> for FutureInstant {
fn into(self) -> Duration {
- let now = Instant::now();
+ let now = config().global_clock.now();
Instant::from(self).checked_duration_since(now).unwrap_or_default()
}
}
type Error = FutureInstantOutOfRange;
#[throws(FutureInstantOutOfRange)]
fn try_from(duration: Duration) -> FutureInstant {
- let now = Instant::now();
+ let now = config().global_clock.now();
now.checked_add(duration).ok_or(FutureInstantOutOfRange)?.into()
}
}