Структура RwLock Read Guard
pub struct RwLockReadGuard<'a, T: ?Sized> { /* private fields */ }
sync.Реализации
impl<'a, T: ?Sized> RwLockReadGuard<'a, T>
pub fn map<F, U: ?Sized>(this: Self, f: F) -> RwLockReadGuard<'a, 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>
Пытается создать новый 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>
impl<T: ?Sized> Deref for RwLockReadGuard<'_, T>
impl<'a, T> Display for RwLockReadGuard<'a, T>
impl<'a, T: ?Sized> Drop for RwLockReadGuard<'a, T>
impl<T> Send for RwLockReadGuard<'_, T>
impl<T> Sync for RwLockReadGuard<'_, T>
Реализации автоматических трейтов
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> 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<P, T> Receiver for P
type Target = T
arbitrary_self_types)
impl<T> ToString for T
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/sync/struct.RwLockReadGuard.html