ref: use generic instead of Box for Pedal::action

v0.1.1
rrr-marble 5 years ago
parent 8998c9dc0b
commit 3199baab9c

@ -14,21 +14,27 @@ fn main() -> () {
let side_handle = std::thread::spawn(|| { let side_handle = std::thread::spawn(|| {
let pedal = Pedal { let pedal = Pedal {
key: evdev::Key::BTN_SIDE, key: evdev::Key::BTN_SIDE,
action: Box::new(|| println!("BTN_SIDE")), action: || println!("BTN_SIDE"),
}; };
loop { loop {
if D.get_key_state().unwrap().contains(pedal.key) { if D.get_key_state().unwrap().contains(pedal.key) {
(*pedal.action)(); (&pedal.action)();
} }
std::thread::sleep(std::time::Duration::from_millis(100)); std::thread::sleep(std::time::Duration::from_millis(100));
} }
}); });
let extra_handle = std::thread::spawn(|| loop { let extra_handle = std::thread::spawn(|| {
if D.get_key_state().unwrap().contains(evdev::Key::BTN_EXTRA) { let pedal = Pedal {
println!("BTN_EXTRA"); 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"); extra_handle.join().expect("Couldn't join");
@ -56,7 +62,7 @@ fn pick_device() -> evdev::Device {
} }
} }
struct Pedal { struct Pedal<F: Fn() -> ()> {
key: evdev::Key, key: evdev::Key,
action: Box<dyn Fn() -> ()>, action: F,
} }

Loading…
Cancel
Save