use calloop::{timer::Timer, EventLoop, LoopSignal};
fn main() {
let mut event_loop: EventLoop<LoopSignal> =
EventLoop::try_new()
.expect("Failed to initialize the event loop!");
let source = Timer::new()
.expect("Failed to create timer event source!");
let timer_handle = source.handle();
timer_handle
.add_timeout(Duration::from_secs(5), "Timeout reached!");
let handle = event_loop.handle();
handle
.insert_source(
source,
|event, _metadata, shared_data| {
println!("Event fired: {}", event);
shared_data.stop();
},
)
.expect("Failed to insert event source!");
let mut shared_data = event_loop.get_signal();
event_loop
.run(None, &mut shared_data, |_shared_data| {})
.expect("Error during event loop!");
}