pub struct CtrlC { /* private fields */ }signal only.Expand description
Represents a listener which receives “ctrl-c” notifications sent to the process
via SetConsoleCtrlHandler.
This event can be turned into a Stream using CtrlCStream.
A notification to this process notifies all receivers for this event. Moreover, the notifications are coalesced if they aren’t processed quickly enough. This means that if two notifications are received back-to-back, then the listener may only receive one item about the two notifications.
Implementations§
Source§impl CtrlC
impl CtrlC
Sourcepub async fn recv(&mut self) -> Option<()>
pub async fn recv(&mut self) -> Option<()>
Receives the next signal notification event.
Although this returns Option<()>, it will never actually return None.
This was accidentally exposed and would be a breaking change to be removed.
§Examples
use tokio::signal::windows::ctrl_c;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut signal = ctrl_c()?;
// Print whenever a CTRL-C event is received.
for countdown in (0..3).rev() {
signal.recv().await;
println!("got CTRL-C. {} more to exit", countdown);
}
Ok(())
}Sourcepub fn poll_recv(&mut self, cx: &mut Context<'_>) -> Poll<Option<()>>
pub fn poll_recv(&mut self, cx: &mut Context<'_>) -> Poll<Option<()>>
Polls to receive the next signal notification event, outside of an
async context.
Although this returns Option<()>, it will never actually return None.
This was accidentally exposed and would be a breaking change to be removed.
§Examples
Polling from a manually implemented future
use std::pin::Pin;
use std::future::Future;
use std::task::{Context, Poll};
use tokio::signal::windows::CtrlC;
struct MyFuture {
ctrl_c: CtrlC,
}
impl Future for MyFuture {
type Output = Option<()>;
fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
println!("polling MyFuture");
self.ctrl_c.poll_recv(cx)
}
}