pub struct LockFileGuard { /* private fields */ }Available on crate feature
state-dir only.Expand description
Re-export of the lock guard type, as obtained via ContainsInstanceStateGuard
A lock-file for which we hold the lock.
So long as this object exists, we hold the lock on this file. When it is dropped, we will release the lock.
§Semantics
- Only one
LockFileGuardcan exist at one time for any particularpath. - This applies across all tasks and threads in all programs; other acquisitions of the lock in the same process are prevented.
- This applies across even separate machines, if
pathis on a shared filesystem.
§Restrictions
pathmust only be deleted (or renamed) via the APIs in this module- This restriction applies to all programs on the computer,
so for example automatic file cleaning with
findandrmis forbidden. - Cross-filesystem locking is broken on Linux before 2.6.12.
Implementations§
Source§impl LockFileGuard
impl LockFileGuard
Sourcepub fn lock<P>(path: P) -> Result<LockFileGuard, Error>
pub fn lock<P>(path: P) -> Result<LockFileGuard, Error>
Try to construct a new LockFileGuard representing a lock we hold on
the file path.
Blocks until we can get the lock.
Sourcepub fn try_lock<P>(path: P) -> Result<Option<LockFileGuard>, Error>
pub fn try_lock<P>(path: P) -> Result<Option<LockFileGuard>, Error>
Try to construct a new LockFileGuard representing a lock we hold on
the file path.
Does not block; returns Ok(None) if somebody else holds the lock.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for LockFileGuard
impl RefUnwindSafe for LockFileGuard
impl Send for LockFileGuard
impl Sync for LockFileGuard
impl Unpin for LockFileGuard
impl UnwindSafe for LockFileGuard
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
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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>
Converts
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>
Converts
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 moreSource§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§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