Структура Ctrl Logoff
pub struct CtrlLogoff { /* private fields */ }
signal.Представляет слушатель, получающий уведомления «ctrl-logoff», отправляемые процессу через SetConsoleCtrlHandler.
Уведомление для этого процесса оповещает всех слушателей, ожидающих это событие. Кроме того, уведомления объединяются, если их не обрабатывают достаточно быстро. Это означает, что если два уведомления поступают одно за другим, слушатель может получить только один элемент, содержащий оба уведомления.
Реализации
impl CtrlLogoff
pub async fn recv(&mut self) -> Option<()>
Получает следующее событие уведомления о сигнале.
Хотя этот метод возвращает Option<()>, на самом деле он никогда не вернёт None. Эта возможность была случайно открыта, и её удаление привело бы к нарушению совместимости.
Примеры
use tokio::signal::windows::ctrl_logoff;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// An listener of CTRL-LOGOFF events.
let mut signal = ctrl_logoff()?;
// Print whenever a CTRL-LOGOFF event is received.
signal.recv().await;
println!("got CTRL-LOGOFF. 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::CtrlLogoff;
struct MyFuture {
ctrl_logoff: CtrlLogoff,
}
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_logoff.poll_recv(cx)
}
}Реализации трейтов
Автоматические реализации трейтов
impl !RefUnwindSafe for CtrlLogoff
impl !UnwindSafe for CtrlLogoff
impl Freeze for CtrlLogoff
impl Send for CtrlLogoff
impl Sync for CtrlLogoff
impl Unpin for CtrlLogoff
impl UnsafeUnpin for CtrlLogoff
Общие реализации
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.CtrlLogoff.html