use okee_wheel_timer::KeyedHashedWheelTimer;
#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
enum Kind {
Input,
Output,
}
#[derive(Debug)]
struct MyData {
kind: Kind,
item_id: u64,
pin: u16,
value: bool,
}
fn main() {
fn dedup_key(data: &MyData) -> (Kind, u64, u16, bool) {
(data.kind, data.item_id, data.pin, data.value)
}
let mut time_wheel = KeyedHashedWheelTimer::new(4, dedup_key);
let event_1 = time_wheel.schedule(
time_wheel.curr_tick(),
MyData {
kind: Kind::Input,
item_id: 1,
pin: 0,
value: true,
},
);
println!("New id is: {:?}", event_1.id);
let event_2 = time_wheel.schedule(
time_wheel.curr_tick() + 10,
MyData {
kind: Kind::Output,
item_id: 4,
pin: 3,
value: false,
},
);
println!("New id is: {:?}", event_2.id);
if let Some(event) = time_wheel.get(event_1.id) {
println!("Event exists on tick {}", event.tick());
}
}