Struct vidi::util::flock::Locked

source ·
pub struct Locked<T: FileLike>(ManuallyDrop<T>);
Expand description

Locks a file securely (requires lockf)

This version takes ownership of the protected resource.

Not reentrant on Linux. That is, even the same thread cannot acquire the same file twice. BUT if there are two copies of this software in the same process, those copies can both lock the same file. This can happen if two different versions of the library are used, for example.

Tuple Fields§

§0: ManuallyDrop<T>

Implementations§

source§

impl<T: FileLike> Locked<T>

source

pub fn new(file: T) -> Result<Self, T>

source

unsafe fn _unlock(&self)

source

pub fn unlock(self) -> T

Unlocks the file

Trait Implementations§

source§

impl<T: FileLike> Deref for Locked<T>

source§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<T: FileLike> Drop for Locked<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Locked<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for Locked<T>
where T: RefUnwindSafe,

§

impl<T> Send for Locked<T>
where T: Send,

§

impl<T> Sync for Locked<T>
where T: Sync,

§

impl<T> Unpin for Locked<T>
where T: Unpin,

§

impl<T> UnwindSafe for Locked<T>
where T: UnwindSafe,

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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 = 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>,

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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more