Struct tor_persist::state_dir::LockFileGuard
source · 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
LockFileGuard
can 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
path
is on a shared filesystem.
§Restrictions
path
must 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
find
andrm
is 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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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 more