Структура Context<'a>
Описание
Контекст асинхронной задачи.
В настоящее время Context предоставляет доступ к &Waker, который может быть использован для пробуждения текущей задачи.
Синтаксис
#![allow(unused)] fn main() { pub struct Context<'a> { /* приватные поля */ } }
Методы
from_waker
#![allow(unused)] fn main() { pub const fn from_waker(waker: &'a Waker) -> Context<'a> }
Создает новый Context из &Waker.
Доступность: 1.36.0 (const: 1.82.0)
waker
#![allow(unused)] fn main() { pub const fn waker(&self) -> &'a Waker }
Возвращает ссылку на Waker для текущей задачи.
Доступность: 1.36.0 (const: 1.82.0)
local_waker ⚡️
#![allow(unused)] fn main() { pub const fn local_waker(&self) -> &'a LocalWaker }
Возвращает ссылку на LocalWaker для текущей задачи.
Примечание: Это экспериментальное API, доступно только в ночных сборках Rust.
ext ⚡️
#![allow(unused)] fn main() { pub const fn ext(&mut self) -> &mut (dyn Any + 'static) }
Возвращает ссылку на данные расширения для текущей задачи.
Примечание: Это экспериментальное API, доступно только в ночных сборках Rust.
Реализации трейтов
Debug
#![allow(unused)] fn main() { impl Debug for Context<'_> }
Позволяет форматирование Context для отладки.
Автоматические реализации трейтов
Freeze for Context<'a>- может быть замороженRefUnwindSafe for Context<'a>- безопасен для паники!Send for Context<'a>- не может быть передан между потоками!Sync for Context<'a>- не может быть разделен между потокамиUnpin for Context<'a>- может быть безопасно перемещеноUnwindSafe for Context<'a>- безопасен для паники
Пример использования
#![allow(unused)] fn main() { use std::task::{Context, Poll, Waker}; // Создание контекста из Waker let waker: &Waker = ...; let cx = Context::from_waker(waker); // Получение Waker из контекста let waker_ref = cx.waker(); }
Назначение
Context используется в асинхронном программировании Rust для:
- Предоставления доступа к
Wakerдля пробуждения задач - Передачи контекстной информации в асинхронные операции
- Реализации Future-трейтов
Особенности
- Не является
SendилиSync, так как привязан к конкретному исполнению - Содержит время жизни
'a, связанное с временем жизни Waker - Используется в методах
pollFuture-трейтов