pub struct StorageLock(/* private fields */);Expand description
A file lock for a storage directory to ensure exclusive read-write access across different processes.
This lock stores the PID of the process holding it and is released (deleted) on a graceful shutdown. On resuming from a crash, the stored PID helps verify that no other process holds the lock.
Implementations§
Source§impl StorageLock
impl StorageLock
Sourcepub fn try_acquire(path: &Path) -> Result<Self, StorageLockError>
pub fn try_acquire(path: &Path) -> Result<Self, StorageLockError>
Tries to acquire a write lock on the target directory, returning [StorageLockError] if
unsuccessful.
Note: In-process exclusivity is not on scope. If called from the same process (or another with the same PID), it will succeed.
Trait Implementations§
Source§impl Clone for StorageLock
impl Clone for StorageLock
Source§impl Debug for StorageLock
impl Debug for StorageLock
impl Eq for StorageLock
Source§impl PartialEq for StorageLock
impl PartialEq for StorageLock
impl StructuralPartialEq for StorageLock
Auto Trait Implementations§
impl Freeze for StorageLock
impl RefUnwindSafe for StorageLock
impl Send for StorageLock
impl Sync for StorageLock
impl Unpin for StorageLock
impl UnsafeUnpin for StorageLock
impl UnwindSafe for StorageLock
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreimpl<T> MaybeDebug for Twhere
T: Debug,
§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 8 bytes