Spec-Zone.ru › Tokio

Структура TaskLocalFuture

pub struct TaskLocalFuture<T, F>
where T: 'static,
{ /* private fields */ }
Доступно только при включённой возможности crate rt.

Будущий объект, который во время выполнения задаёт значение T локального значения задачи для будущего объекта F.

Значение локальной переменной задачи должно быть 'static и будет удалено после завершения будущего объекта.

Создаётся функцией LocalKey::scope.

Примеры

tokio::task_local! {
    static NUMBER: u32;
}

NUMBER.scope(1, async move {
    println!("task local value: {}", NUMBER.get());
}).await;

Реализации

impl<T, F> TaskLocalFuture<T, F>
where T: 'static,

pub fn take_value(self: Pin<&mut Self>) -> Option<T>

Возвращает значение, сохранённое в локальной переменной задачи этим TaskLocalFuture.

Функция возвращает:

  • Some(T), если локальное значение задачи существует.
  • None, если локальное значение задачи уже было извлечено.

Обратите внимание, что эта функция пытается извлечь локальное значение задачи, даже если выполнение будущего объекта ещё не завершено. В этом случае после вызова take_value значение больше не будет доступно через локальную переменную задачи.

Примеры
tokio::task_local! {
    static KEY: u32;
}

let fut = KEY.scope(42, async {
    // Do some async work
});

let mut pinned = Box::pin(fut);

// Complete the TaskLocalFuture
let _ = pinned.as_mut().await;

// And here, we can take task local value
let value = pinned.as_mut().take_value();

assert_eq!(value, Some(42));

Реализации трейтов

impl<T, F> Debug for TaskLocalFuture<T, F>
where T: Debug + 'static,

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Форматирует значение с помощью заданного форматтера. Подробнее

impl<T: 'static, F> Drop for TaskLocalFuture<T, F>

fn drop(&mut self)

Выполняет деструктор для этого типа. Подробнее

fn pin_drop(self: Pin<&mut Self>)

🔬Это экспериментальный API, доступный только в nightly-версии. (pin_ergonomics)
Выполняет деструктор для этого типа, но, в отличие от Drop::drop, требует, чтобы self был закреплён. Подробнее

impl<T: 'static, F: Future> Future for TaskLocalFuture<T, F>

type Output = <F as Future>::Output

Тип значения, возвращаемого по завершении.

fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>

Пытается разрешить future до получения итогового значения; если значение ещё недоступно, регистрирует текущую задачу для пробуждения. Подробнее

impl<'__pin, T, F> Unpin for TaskLocalFuture<T, F>
where PinnedFieldsOf<__Origin<'__pin, T, F>>: Unpin, T: 'static,

Автоматические реализации трейтов

impl<T, F> !UnsafeUnpin for TaskLocalFuture<T, F>

impl<T, F> Freeze for TaskLocalFuture<T, F>
where T: Freeze, F: Freeze,

impl<T, F> RefUnwindSafe for TaskLocalFuture<T, F>
where T: RefUnwindSafe, F: RefUnwindSafe,

impl<T, F> Send for TaskLocalFuture<T, F>
where T: Send, F: Send,

impl<T, F> Sync for TaskLocalFuture<T, F>
where T: Sync, F: Sync,

impl<T, F> UnwindSafe for TaskLocalFuture<T, F>
where T: UnwindSafe, F: UnwindSafe,

Обобщённые реализации

impl<T> Any for T
where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

Получает TypeId для self. Подробнее

impl<T> Borrow<T> for T
where T: ?Sized,

fn borrow(&self) -> &T

Неизменяемо заимствует данные из принадлежащего значения. Подробнее

impl<T> BorrowMut<T> for T
where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

Изменяемо заимствует данные из принадлежащего значения. Подробнее

impl<T> From<T> for T

fn from(t: T) -> T

Возвращает аргумент без изменений.

impl<T> Instrument for T

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью предоставленного Span, возвращая оболочку Instrumented. Подробнее

fn in_current_span(self) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью current Span, возвращая оболочку Instrumented. Подробнее

impl<T, U> Into<U> for T
where U: From<T>,

fn into(self) -> U

Вызывает U::from(self).

Иными словами, это преобразование выполняет то, что выберет реализация From<T> for U.

impl<F> IntoFuture for F
where F: Future,

type Output = <F as Future>::Output

Результат, который будет получен при завершении будущего значения.

type IntoFuture = F

В какой тип будущего значения мы преобразуем это значение?

fn into_future(self) -> <F as IntoFuture>::IntoFuture

Создаёт будущее значение из значения. Подробнее

impl<T, U> TryFrom<U> for T
where U: Into<T>,

type Error = Infallible

Тип, возвращаемый в случае ошибки преобразования.

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Выполняет преобразование.

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error

Тип, возвращаемый в случае ошибки преобразования.

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Выполняет преобразование.

impl<T> WithSubscriber for T

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Присоединяет предоставленный Subscriber к этому типу, возвращая обёртку WithDispatch. Подробнее

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Присоединяет текущий по умолчанию Subscriber к этому типу, возвращая обёртку WithDispatch. Подробнее

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/task/futures/struct.TaskLocalFuture.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API