use std::{future::Future, pin::Pin, task::Poll, time::Duration}; use async_io::Timer; /// Returns a stream of 'ticks', each being duration `dur` apart. /// /// Can be useful to provide the TUI with additional events in regular intervals, /// when using the [`tui::render_with_input(…events)`](./fn.render_with_input.html) function. pub fn ticker(dur: Duration) -> impl futures_core::Stream { let mut delay = Timer::after(dur); futures_lite::stream::poll_fn(move |ctx| { let res = Pin::new(&mut delay).poll(ctx); match res { Poll::Pending => Poll::Pending, Poll::Ready(_) => { delay = Timer::after(dur); Poll::Ready(Some(())) } } }) } pub const VERTICAL_LINE: &str = "│"; pub use tui_react::{draw_text_nowrap_fn, draw_text_with_ellipsis_nowrap, util::*};