Struct CtrlC
pub struct CtrlC { /* private fields */ }
signal only.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
impl CtrlC
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(())
}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)
}
}Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for CtrlC
impl !UnwindSafe for CtrlC
impl Freeze for CtrlC
impl Send for CtrlC
impl Sync for CtrlC
impl Unpin for CtrlC
impl UnsafeUnpin for CtrlC
Blanket Implementations
impl<T> BorrowMut<T> for Twhere T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> Instrument for T
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
impl<T> WithSubscriber for T
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/signal/windows/struct.CtrlC.html