Структура CtrlC
pub struct CtrlC { /* private fields */ }
signal.Представляет слушатель, получающий уведомления «ctrl-c», отправленные процессу через SetConsoleCtrlHandler.
Это событие можно преобразовать в Stream с помощью CtrlCStream.
Уведомление этому процессу оповещает всех получателей этого события. Кроме того, уведомления объединяются, если они не обрабатываются достаточно быстро. Это значит, что если два уведомления поступают одно за другим, слушатель может получить только один элемент для обоих уведомлений.
Реализации
impl CtrlC
pub async fn recv(&mut self) -> Option<()>
Получает следующее событие уведомления о сигнале.
Хотя этот метод возвращает Option<()>, он никогда фактически не вернёт None. Это было случайно добавлено в публичный API, и его удаление стало бы несовместимым изменением.
Примеры
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<()>>
Ожидает получения следующего события уведомления о сигнале вне контекста async.
Хотя этот метод возвращает Option<()>, он никогда фактически не вернёт None. Это было случайно добавлено в публичный API, и его удаление стало бы несовместимым изменением.
Примеры
Опрос из вручную реализованного 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)
}
}Реализации трейтов
Автоматические реализации трейтов
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
Общие реализации
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> ⓘ
Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/signal/windows/struct.CtrlC.html