Spec-Zone.ru › Tokio

Структура RwLockReadGuard

pub struct RwLockReadGuard<'a, T: ?Sized> { /* private fields */ }
Доступно только при включенной функции крейта sync.

Структура RAII, используемая для освобождения общего доступа на чтение к блокировке при уничтожении.

Эта структура создается методом read у RwLock.

Реализации

impl<'a, T: ?Sized> RwLockReadGuard<'a, T>

pub fn map<F, U: ?Sized>(this: Self, f: F) -> RwLockReadGuard<'a, U>
where F: FnOnce(&T) -> &U,

Создает новый RwLockReadGuard для компонента заблокированных данных.

Эта операция не может завершиться неудачно, поскольку переданный RwLockReadGuard уже заблокировал данные.

Это ассоциированная функция, которую необходимо вызывать как RwLockReadGuard::map(...). Метод помешал бы использовать методы с таким же именем для содержимого заблокированных данных.

Это асинхронная версия RwLockReadGuard::map из крейта parking_lot.

Примеры
use tokio::sync::{RwLock, RwLockReadGuard};

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
struct Foo(u32);

let lock = RwLock::new(Foo(1));

let guard = lock.read().await;
let guard = RwLockReadGuard::map(guard, |f| &f.0);

assert_eq!(1, *guard);

pub fn try_map<F, U: ?Sized>( this: Self, f: F, ) -> Result<RwLockReadGuard<'a, U>, Self>
where F: FnOnce(&T) -> Option<&U>,

Пытается создать новый RwLockReadGuard для компонента заблокированных данных. Если замыкание возвращает None, возвращается исходный guard.

Эта операция не может завершиться неудачно, поскольку переданный RwLockReadGuard уже заблокировал данные.

Это ассоциированная функция, которую необходимо вызывать как RwLockReadGuard::try_map(..). Метод помешал бы использовать методы с таким же именем для содержимого заблокированных данных.

Это асинхронная версия RwLockReadGuard::try_map из крейта parking_lot.

Примеры
use tokio::sync::{RwLock, RwLockReadGuard};

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
struct Foo(u32);

let lock = RwLock::new(Foo(1));

let guard = lock.read().await;
let guard = RwLockReadGuard::try_map(guard, |f| Some(&f.0)).expect("should not fail");

assert_eq!(1, *guard);

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

impl<'a, T> Debug for RwLockReadGuard<'a, T>
where T: Debug + ?Sized,

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

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

impl<T: ?Sized> Deref for RwLockReadGuard<'_, T>

type Target = T

Результирующий тип после разыменования.

fn deref(&self) -> &T

Разыменовывает значение.

impl<'a, T> Display for RwLockReadGuard<'a, T>
where T: Display + ?Sized,

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

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

impl<'a, T: ?Sized> Drop for RwLockReadGuard<'a, T>

fn drop(&mut self)

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

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

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

impl<T> Send for RwLockReadGuard<'_, T>
where T: ?Sized + Sync,

impl<T> Sync for RwLockReadGuard<'_, T>
where T: ?Sized + Send + Sync,

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

impl<'a, T> !RefUnwindSafe for RwLockReadGuard<'a, T>

impl<'a, T> !UnwindSafe for RwLockReadGuard<'a, T>

impl<'a, T> Freeze for RwLockReadGuard<'a, T>
where T: ?Sized,

impl<'a, T> Unpin for RwLockReadGuard<'a, T>
where T: ?Sized,

impl<'a, T> UnsafeUnpin for RwLockReadGuard<'a, T>
where T: ?Sized,

Общие реализации

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> ⓘ

Инструментирует этот тип с помощью текущего 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

type Target = T

🔬Это экспериментальный API, доступный только в nightly. (arbitrary_self_types)
Целевой тип, для которого можно вызвать метод.

impl<T> ToString for T
where T: Display + ?Sized,

fn to_string(&self) -> String

Преобразует заданное значение в String. Подробнее

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/sync/struct.RwLockReadGuard.html

Spec-Zone.ru

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