use super::TerminationCondition;
use crate::basic_types::time::Duration;
use crate::basic_types::time::Instant;
#[derive(Clone, Copy, Debug)]
pub struct TimeBudget {
started_at: Instant,
budget: Duration,
}
impl TimeBudget {
pub fn starting_now(budget: Duration) -> TimeBudget {
let started_at = Instant::now();
TimeBudget { started_at, budget }
}
}
impl TerminationCondition for TimeBudget {
fn should_stop(&mut self) -> bool {
self.started_at.elapsed() >= self.budget
}
}