use std::time::Duration;
pub enum Timing {
Seconds(u64),
Minutes(u64),
Hours(u64),
Days(u64),
}
pub struct FunScheduler;
impl FunScheduler {
pub fn interval(job: fn(), timing: Timing) {
let time = calc_time(timing);
loop {
std::thread::spawn(move || {
job();
});
std::thread::sleep(time);
}
}
pub fn rinterval(job: fn(), timing: Timing) {
let time = calc_time(timing);
loop {
std::thread::sleep(time);
std::thread::spawn(move || {
job();
});
}
}
pub fn after(job: fn(), timing: Timing) {
std::thread::sleep(calc_time(timing));
job();
}
}
fn calc_time(timing: Timing) -> Duration {
match timing {
Timing::Seconds(s) => Duration::from_secs(s),
Timing::Minutes(minutes) => Duration::from_secs(minutes * 60),
Timing::Hours(hours) => Duration::from_secs(hours * 3600),
Timing::Days(days) => Duration::from_secs(days * 86_400),
}
}