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