Структура RwLockReadGuard<'rwlock, T>

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

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

Стабильность: 1.0.0

Методы

map (экспериментальный)

#![allow(unused)]
fn main() {
pub fn map<U, F>(orig: Self, f: F) -> MappedRwLockReadGuard<'rwlock, U>
}

Создает MappedRwLockReadGuard для компонента заимствованных данных, например, варианта перечисления.

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

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

Паники: Если замыкание паникует, гард будет удален (разблокирован) и RwLock не будет отравлен.

filter_map (экспериментальный)

#![allow(unused)]
fn main() {
pub fn filter_map<U, F>(orig: Self, f: F) -> Result<MappedRwLockReadGuard<'rwlock, U>, Self>
}

Создает MappedRwLockReadGuard для компонента заимствованных данных. Оригинальный гард возвращается как Err(...), если замыкание возвращает None.

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

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

Паники: Если замыкание паникует, гард будет удален (разблокирован) и RwLock не будет отравлен.

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

Debug (стабильность: 1.16.0)

Реализует форматирование для отладки (где T: Debug).

Deref (стабильность: 1.0.0)

Реализует разыменование для доступа к защищенным данным.

Ассоциированный тип:

  • Target = T - тип после разыменования

Метод:

  • deref(&self) -> &T - разыменовывает значение

Display (стабильность: 1.20.0)

Реализует пользовательское форматирование (где T: Display).

Drop (стабильность: 1.0.0)

Реализует автоматическое освобождение блокировки при удалении гарда.

Безопасность потоков

  • !Send - не может быть отправлен между потоками
  • Sync (где T: Sync) - может использоваться совместно между потоками

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

  • Freeze
  • RefUnwindSafe (где T: RefUnwindSafe)
  • Unpin
  • UnwindSafe (где T: RefUnwindSafe)

Стандартные реализации

  • Any
  • Borrow<T>
  • BorrowMut<T>
  • From<T>
  • Into<U>
  • Receiver (экспериментальный) - для произвольных типов self
  • ToString
  • TryFrom<U>
  • TryInto<U>