From 31ad2af6b2048b39455b2e11d80022cf4df374b2 Mon Sep 17 00:00:00 2001 From: rrr-marble Date: Sun, 27 Jun 2021 17:27:03 +0300 Subject: [PATCH] ref: loop vec for take all key-action pairs --- src/main.rs | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/main.rs b/src/main.rs index cfa5abf..aa93e69 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,7 +12,7 @@ fn main() -> () { } println!("{}", D.name().unwrap_or("Unknown device")); - let mut pedals = vec![ + let pedals = vec![ Pedal { key: evdev::Key::BTN_SIDE, action: Box::new(|| println!("BTN_SIDE")), @@ -23,23 +23,21 @@ fn main() -> () { }, ]; - let pedal = pedals.pop().unwrap(); - let side_handle = std::thread::spawn(move || loop { - if D.get_key_state().unwrap().contains(pedal.key) { - (*pedal.action)(); - } - std::thread::sleep(std::time::Duration::from_millis(100)); - }); + let mut handles: Vec<_> = Vec::new(); - let extra_handle = std::thread::spawn(|| loop { - if D.get_key_state().unwrap().contains(evdev::Key::BTN_SIDE) { - println!("BTN_SIDE"); - } - std::thread::sleep(std::time::Duration::from_millis(100)); - }); + for pedal in pedals { + let handle = std::thread::spawn(move || loop { + if D.get_key_state().unwrap().contains(pedal.key) { + (*pedal.action)(); + } + std::thread::sleep(std::time::Duration::from_millis(100)); + }); + handles.push(handle); + } - extra_handle.join().expect("Couldn't join"); - side_handle.join().expect("Couldn't join"); + for handle in handles { + handle.join().expect("Couldn't join"); + } } fn pick_device() -> evdev::Device {