const THRESHOLD: i8 = 50; pub enum ScrollAction { Previous, Next, None, } pub struct ScrollTracker { tracker: i8, } impl ScrollTracker { pub fn new() -> Self { Self { tracker: 0 } } pub fn scroll(&mut self, scroll: i8) -> ScrollAction { self.tracker = self.tracker.saturating_add(scroll); if self.tracker < -THRESHOLD { self.tracker = 0; ScrollAction::Previous } else if self.tracker > 50 { self.tracker = 0; ScrollAction::Next } else { ScrollAction::None } } }