Структура Ctrl Close
pub struct CtrlClose { /* private fields */ }
signal.Представляет обработчик, получающий уведомления «ctrl-close», отправленные процессу через SetConsoleCtrlHandler.
Уведомление этому процессу оповещает всех обработчиков, ожидающих это событие. Кроме того, уведомления объединяются, если они не обрабатываются достаточно быстро. Это означает, что если два уведомления получены одно за другим, обработчик может получить только один элемент для обоих уведомлений.
Реализации
impl CtrlClose
pub async fn recv(&mut self) -> Option<()>
Получает следующее событие уведомления о сигнале.
Хотя этот метод возвращает Option<()>, на самом деле он никогда не вернёт None. Эта возможность была раскрыта случайно, и её удаление стало бы ломающим изменением.
Примеры
use tokio::signal::windows::ctrl_close;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// A listener of CTRL-CLOSE events.
let mut signal = ctrl_close()?;
// Print whenever a CTRL-CLOSE event is received.
signal.recv().await;
println!("got CTRL-CLOSE. Cleaning up before exiting");
Ok(())
}pub fn poll_recv(&mut self, cx: &mut Context<'_>) -> Poll<Option<()>>
Проверяет возможность получить следующее событие уведомления о сигнале вне контекста async.
Хотя этот метод возвращает Option<()>, на самом деле он никогда не вернёт None. Эта возможность была раскрыта случайно, и её удаление стало бы ломающим изменением.
Примеры
Опрос из вручную реализованного future
use std::pin::Pin;
use std::future::Future;
use std::task::{Context, Poll};
use tokio::signal::windows::CtrlClose;
struct MyFuture {
ctrl_close: CtrlClose,
}
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_close.poll_recv(cx)
}
}Реализации трейтов
Реализации авто-трейтов
impl !RefUnwindSafe for CtrlClose
impl !UnwindSafe for CtrlClose
impl Freeze for CtrlClose
impl Send for CtrlClose
impl Sync for CtrlClose
impl Unpin for CtrlClose
impl UnsafeUnpin for CtrlClose
Общие реализации
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.CtrlClose.html