@@ -1,76 +0,0 @@
1−//! Demonstrates how to read events asynchronously with async-std.
3−//! cargo run --features="event-stream" --example event-stream-async-std
10−use futures::{future::FutureExt, select, StreamExt};
12−// use futures_timer::Delay;
16− event::{DisableMouseCapture, EnableMouseCapture, Event, EventStream, KeyCode},
18− terminal::{disable_raw_mode, enable_raw_mode},
22−const HELP: &str = r#"EventStream based on futures::Stream with async-std
23− - Keyboard, mouse and terminal resize events enabled
24− - Prints "." every second if there's no event
25− - Hit "c" to print current cursor position
29−async fn print_events() {
30− let mut reader = EventStream::new();
33− let mut delay = Timer::after(Duration::from_millis(1_000)).fuse();
34− let mut event = reader.next().fuse();
37− _ = delay => { println!(".\r"); },
38− maybe_event = event => {
41− println!("Event::{:?}\r", event);
43− if event == Event::Key(KeyCode::Char('c').into()) {
44− println!("Cursor position: {:?}\r", position());
50− if event == Event::Key(KeyCode::Esc.into()) {
54− Some(Err(e)) => println!("Error: {:?}\r", e),
62−fn main() -> Result<()> {
63− println!("{}", HELP);
67− let mut stdout = stdout();
68− execute!(stdout, EnableMouseCapture)?;
70− // No need to `run()`, now we can just block on the main future.
71− smol::run(print_events());
73− execute!(stdout, DisableMouseCapture)?;