Struct yaque::queue::RecvGuard

source ·
pub struct RecvGuard<'a, T> { /* private fields */ }
Expand description

A guard that will only log changes on the queue state when dropped.

If it is dropped without a call to RecvGuard::commit, changes will be rolled back in a “best effort” policy: if any IO error is encountered during rollback, the state will be committed. If you can do something with the IO error, you may use RecvGuard::rollback explicitly to catch the error.

This struct implements Deref and DerefMut. If you really, really want ownership, there is RecvGuard::into_inner, but be careful, because you lose your chance to rollback if anything unexpected occurs.

Implementations§

source§

impl<'a, T> RecvGuard<'a, T>

source

pub fn try_into_inner(self) -> Result<T>

Commits the transaction and returns the underlying value. If you accidentally lose this value from now on, it’s your own fault!

source

pub fn commit(self) -> Result<()>

Commits the changes to the queue, consuming this RecvGuard.

source

pub fn rollback(self) -> Result<()>

Rolls the reader back to the previous point, negating the changes made on the queue. This is also done on drop. However, on drop, the possible IO error is ignored (but logged as an error) because we cannot have errors inside drops. Use this if you want to control errors at rollback.

Errors

If there is some error while moving the reader back, this error will be return.

Trait Implementations§

source§

impl<'a, T> DerefMut for RecvGuard<'a, T>

source§

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

Mutably dereferences the value.
source§

impl<'a, T> Drop for RecvGuard<'a, T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'a, T> Deref for RecvGuard<'a, T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &T

Dereferences the value.

Auto Trait Implementations§

§

impl<'a, T> RefUnwindSafe for RecvGuard<'a, T>where T: RefUnwindSafe,

§

impl<'a, T> Send for RecvGuard<'a, T>where T: Send,

§

impl<'a, T> Sync for RecvGuard<'a, T>where T: Sync,

§

impl<'a, T> Unpin for RecvGuard<'a, T>where T: Unpin,

§

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

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
source§

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

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V