rat_salsa/poll/
crossterm.rs

1use crate::Control;
2use crate::poll::PollEvents;
3use std::any::Any;
4use std::time::Duration;
5
6/// Processes crossterm events.
7#[derive(Debug)]
8pub struct PollCrossterm;
9
10impl<Event, Error> PollEvents<Event, Error> for PollCrossterm
11where
12    Event: 'static + From<ratatui_crossterm::crossterm::event::Event>,
13    Error: 'static + From<std::io::Error>,
14{
15    fn as_any(&self) -> &dyn Any {
16        self
17    }
18
19    fn poll(&mut self) -> Result<bool, Error> {
20        Ok(ratatui_crossterm::crossterm::event::poll(
21            Duration::from_millis(0),
22        )?)
23    }
24
25    fn read(&mut self) -> Result<Control<Event>, Error> {
26        Ok(ratatui_crossterm::crossterm::event::read().map(|v| Control::Event(v.into()))?)
27    }
28}