Skip to main content

ProcessLock

Struct ProcessLock 

Source
pub struct ProcessLock(/* private fields */);
Expand description

An exclusive OS file lock, released when this value is dropped.

Every participant must use the same persistent path in an application-owned directory. Neither this type nor a caller may unlink or replace the lock file: another process could still hold a lock on the original inode. Keep this guard alive through endpoint cleanup and the work it protects. Use separate paths for daemon ownership and upgrade serialization.

Implementations§

Source§

impl ProcessLock

Source

pub fn try_acquire(path: impl AsRef<Path>) -> Result<Option<Self>>

Acquire without waiting, creating the file if necessary.

Returns Ok(None) only for contention; filesystem and locking failures remain errors. The parent directory must already exist.

Source

pub fn try_from_file(file: File) -> Result<Option<Self>>

Lock an already-open file. This preserves a consumer’s secure open policy.

Source

pub fn is_held(path: impl AsRef<Path>) -> Result<bool>

Observe an existing lock without creating a file. Only contention is true.

Trait Implementations§

Source§

impl Debug for ProcessLock

Source§

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

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

impl Drop for ProcessLock

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.