From 3199baab9c829189a2b5de4289177eaed4f7670b Mon Sep 17 00:00:00 2001 From: rrr-marble Date: Sun, 27 Jun 2021 09:03:06 +0300 Subject: [PATCH] ref: use generic instead of Box for Pedal::action --- src/main.rs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 93c283d..5ff3e31 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,21 +14,27 @@ fn main() -> () { let side_handle = std::thread::spawn(|| { let pedal = Pedal { key: evdev::Key::BTN_SIDE, - action: Box::new(|| println!("BTN_SIDE")), + action: || println!("BTN_SIDE"), }; loop { if D.get_key_state().unwrap().contains(pedal.key) { - (*pedal.action)(); + (&pedal.action)(); } std::thread::sleep(std::time::Duration::from_millis(100)); } }); - let extra_handle = std::thread::spawn(|| loop { - if D.get_key_state().unwrap().contains(evdev::Key::BTN_EXTRA) { - println!("BTN_EXTRA"); + let extra_handle = std::thread::spawn(|| { + let pedal = Pedal { + key: evdev::Key::BTN_EXTRA, + action: || println!("BTN_EXTRA"), + }; + loop { + if D.get_key_state().unwrap().contains(pedal.key) { + (&pedal.action)(); + } + std::thread::sleep(std::time::Duration::from_millis(100)); } - std::thread::sleep(std::time::Duration::from_millis(100)); }); extra_handle.join().expect("Couldn't join"); @@ -56,7 +62,7 @@ fn pick_device() -> evdev::Device { } } -struct Pedal { +struct Pedal ()> { key: evdev::Key, - action: Box ()>, + action: F, }