dprs 0.1.14

dprs (Docker PRocesS viewer ) is a terminal user interface for managing Docker containers and monitoring their logs.
Documentation
use crossterm::event::{self, Event};
use std::sync::mpsc;
use std::time::Duration;

pub struct InputWatcher {
    receiver: mpsc::Receiver<Event>,
}

impl Default for InputWatcher {
    fn default() -> Self {
        Self::new()
    }
}

impl InputWatcher {
    pub fn new() -> Self {
        let (sender, receiver) = mpsc::channel();

        std::thread::spawn(move || loop {
            if let Ok(true) = event::poll(Duration::from_millis(10)) {
                if let Ok(event) = event::read() {
                    if sender.send(event).is_err() {
                        break;
                    }
                }
            }
        });

        Self { receiver }
    }

    pub fn try_recv(&self) -> Result<Event, mpsc::TryRecvError> {
        self.receiver.try_recv()
    }
}