[−][src]Struct left_right::ReadGuard
A guard wrapping a live reference into a left-right protected T.
As long as this guard lives, the T being read cannot change. If a writer attempts to call
WriteHandle::publish, that call will block until this guard is
dropped.
To scope the guard to a subset of the data in T, use map and
try_map.
Implementations
impl<'rh, T: ?Sized> ReadGuard<'rh, T>[src]
pub fn map<F, U: ?Sized>(orig: Self, f: F) -> ReadGuard<'rh, U> where
F: for<'a> FnOnce(&'a T) -> &'a U, [src]
F: for<'a> FnOnce(&'a T) -> &'a U,
Makes a new ReadGuard for a component of the borrowed data.
This is an associated function that needs to be used as ReadGuard::map(...), since
a method would interfere with methods of the same name on the contents of a Readguard
used through Deref.
Examples
use left_right::{ReadGuard, ReadHandle}; fn get_str(handle: &ReadHandle<Vec<(String, i32)>>, i: usize) -> Option<ReadGuard<'_, str>> { handle.enter().map(|guard| { ReadGuard::map(guard, |t| { &*t[i].0 }) }) }
pub fn try_map<F, U: ?Sized>(orig: Self, f: F) -> Option<ReadGuard<'rh, U>> where
F: for<'a> FnOnce(&'a T) -> Option<&'a U>, [src]
F: for<'a> FnOnce(&'a T) -> Option<&'a U>,
Makes a new ReadGuard for a component of the borrowed data that may not exist.
This method differs from map in that it drops the guard if the closure maps
to None. This allows you to "lift" a ReadGuard<Option<T>> into an
Option<ReadGuard<T>>.
This is an associated function that needs to be used as ReadGuard::try_map(...), since
a method would interfere with methods of the same name on the contents of a Readguard
used through Deref.
Examples
use left_right::{ReadGuard, ReadHandle}; fn try_get_str(handle: &ReadHandle<Vec<(String, i32)>>, i: usize) -> Option<ReadGuard<'_, str>> { handle.enter().and_then(|guard| { ReadGuard::try_map(guard, |t| { t.get(i).map(|v| &*v.0) }) }) }
Trait Implementations
impl<'rh, T: ?Sized> AsRef<T> for ReadGuard<'rh, T>[src]
impl<'rh, T: Debug + ?Sized> Debug for ReadGuard<'rh, T>[src]
impl<'rh, T: ?Sized> Deref for ReadGuard<'rh, T>[src]
impl<'rh, T: ?Sized> Drop for ReadGuard<'rh, T>[src]
Auto Trait Implementations
impl<'rh, T> !RefUnwindSafe for ReadGuard<'rh, T>
impl<'rh, T> !Send for ReadGuard<'rh, T>
impl<'rh, T> !Sync for ReadGuard<'rh, T>
impl<'rh, T: ?Sized> Unpin for ReadGuard<'rh, T>
impl<'rh, T> !UnwindSafe for ReadGuard<'rh, T>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,