pub struct CtrlC { /* private fields */ }
Available on Windows and crate feature
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.
None
is returned if no more events can be received by the listener.
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.
None
is returned if no more events can be received.
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 Send for CtrlC
impl Sync for CtrlC
impl Unpin for CtrlC
impl !UnwindSafe for CtrlC
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more