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 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<F: Fn() -> ()> {
key: evdev::Key,
action: Box<dyn Fn() -> ()>,
action: F,
}

Loading…
Cancel
Save