// Copyright (c) 2015 CtrlC developers // Licensed under the Apache License, Version 2.0 // or the MIT // license , // at your option. All files in the project carrying such // notice may not be copied, modified, or distributed except // according to those terms. #[cfg(feature = "tokio")] #[cfg_attr(feature = "tokio", tokio::main(flavor = "current_thread"))] async fn main() { let (tx, mut rx) = tokio::sync::mpsc::channel::<()>(1); ctrlc2::set_async_handler(async move { tx.send(()).await.expect("ctrlc2 send signal failed"); }) .await; println!("Waiting for Ctrl-C..."); rx.recv().await.expect("Could not receive from channel."); println!(""); println!("Got it! Exiting..."); } #[cfg(not(feature = "tokio"))] fn main() { println!("This example requires the 'tokio' feature."); }