async-ctrlc is an async wrapper of the [ctrlc] crate.

Build status Latest Version Documentation

Future example

```rust use asyncctrlc::CtrlC; use asyncstd::{prelude::FutureExt, task::sleep}; use std::time::Duration;

[async_std::main]

async fn main() { let ctrlc = CtrlC::new().expect("cannot create Ctrl+C handler?"); println!("Try to press Ctrl+C"); ctrlc.race(async { let mut i = 0; loop { println!("... {}", i); sleep(Duration::from_secs(1)).await; i += 1; } }).await; println!("Quitting"); } ```

Stream example

```rust use asyncctrlc::CtrlC; use asyncstd::prelude::StreamExt as _;

[async_std::main]

async fn main() { let ctrlc = CtrlC::new().expect("cannot create Ctrl+C handler?"); println!("Try to press Ctrl+C 3 times"); let mut stream = ctrlc.enumerate().take(3); while let Some((count, _)) = stream.next().await { println!("{} x Ctrl+C!", count + 1); } println!("Quitting"); } ```

License

MIT or Apache-2.0.