Enum file_guard::Lock

source ·
pub enum Lock {
    Shared,
    Exclusive,
}
Expand description

The type of a lock operation.

This is used to specify the desired lock type when used with lock() and try_lock(), and it is the successful result type returned by lock_any().

Variants§

§

Shared

A shared lock may be concurrently held by multiple processes while preventing future exclusive locks its lifetime.

The shared lock type cannot be obtained while an exclusive lock is held by another process. When successful, a shared lock guarantees that only one or more shared locks are concurrently held, and that no exclusive locks are held.

This lock type–often referred to as a read lock–may be used as a means of signaling read integrity. When used cooperatively, they ensure no exclusive lock is held, and thus, no other process may be writing to a shared resource.

§

Exclusive

An exclusive lock may only be held by a single process.

The exclusive lock type can neither be obtained while any shared locks are held or while any other exclusive locks are held. This linearizes the sequence of processes attempting to acquire an exclusive lock.

This lock type–also known as a write lock–may be used as a means of ensuring write exclusivity. In a cooperative locking environment, all access to a shared resource is halted until the exlusive lock is released.

Trait Implementations§

source§

impl Clone for Lock

source§

fn clone(&self) -> Lock

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Lock

source§

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

Formats the value using the given formatter. Read more
source§

impl PartialEq for Lock

source§

fn eq(&self, other: &Lock) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for Lock

source§

impl StructuralPartialEq for Lock

Auto Trait Implementations§

§

impl RefUnwindSafe for Lock

§

impl Send for Lock

§

impl Sync for Lock

§

impl Unpin for Lock

§

impl UnwindSafe for Lock

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where 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 T
where 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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where 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 T
where 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.