# Struct cargo::util::FileLock

source ·

    pub struct FileLock {
        f: Option<File>,
        path: PathBuf,
    }

Expand description

A locked file.

This provides access to file while holding a lock on the file. This type implements the `Read`, `Write`, and `Seek` traits to provide access to the underlying file.

Locks are either shared (multiple processes can access the file) or exclusive (only one process can access the file).

This type is created via methods on the `Filesystem` type.

When this value is dropped, the lock will be released.

## Fields§

§`f: Option<File>`§`path: PathBuf`

## Implementations§

source§

### impl FileLock

source

#### pub fn file(&self) -> &File

Returns the underlying file handle of this lock.

source

#### pub fn path(&self) -> &Path

Returns the underlying path that this lock points to.

Note that special care must be taken to ensure that the path is not referenced outside the lifetime of this lock.

source

#### pub fn parent(&self) -> &Path

Returns the parent path containing this file

source

#### pub fn remove_siblings(&self) -> CargoResult<()>

Removes all sibling files to this locked file.

This can be useful if a directory is locked with a sentinel file but it needs to be cleared out as it may be corrupt.

## Trait Implementations§

source§

### impl Debug for FileLock

source§

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

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

### impl Drop for FileLock

source§

#### fn drop(&mut self)

Executes the destructor for this type. Read more
source§

### impl Read for FileLock

source§

#### fn read(&mut self, buf: &mut [u8]) -> Result<usize>

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
1.36.0 · source§

#### fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

Like `read`, except that it reads into a slice of buffers. Read more
source§

#### fn is_read_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (`can_vector`)
Determines if this `Read`er has an efficient `read_vectored` implementation. Read more
1.0.0 · source§

#### fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>

Read all bytes until EOF in this source, placing them into `buf`. Read more
1.0.0 · source§

#### fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>

Read all bytes until EOF in this source, appending them to `buf`. Read more
1.6.0 · source§

#### fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

Read the exact number of bytes required to fill `buf`. Read more
source§

#### fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (`read_buf`)
Pull some bytes from this source into the specified buffer. Read more
source§

#### fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (`read_buf`)
Read the exact number of bytes required to fill `cursor`. Read more
1.0.0 · source§

#### fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adaptor for this instance of `Read`. Read more
1.0.0 · source§

#### fn bytes(self) -> Bytes<Self>
where Self: Sized,

Transforms this `Read` instance to an `Iterator` over its bytes. Read more
1.0.0 · source§

#### fn chain<R>(self, next: R) -> Chain<Self, R>
where R: Read, Self: Sized,

Creates an adapter which will chain this stream with another. Read more
1.0.0 · source§

#### fn take(self, limit: u64) -> Take<Self>
where Self: Sized,

Creates an adapter which will read at most `limit` bytes from it. Read more
source§

### impl Seek for FileLock

source§

#### fn seek(&mut self, to: SeekFrom) -> Result<u64>

Seek to an offset, in bytes, in a stream. Read more
1.55.0 · source§

#### fn rewind(&mut self) -> Result<(), Error>

Rewind to the beginning of a stream. Read more
source§

#### fn stream_len(&mut self) -> Result<u64, Error>

🔬This is a nightly-only experimental API. (`seek_stream_len`)
Returns the length of this stream (in bytes). Read more
1.51.0 · source§

#### fn stream_position(&mut self) -> Result<u64, Error>

Returns the current seek position from the start of the stream. Read more
1.80.0 · source§

#### fn seek_relative(&mut self, offset: i64) -> Result<(), Error>

Seeks relative to the current position. Read more
source§

### impl Write for FileLock

source§

#### fn write(&mut self, buf: &[u8]) -> Result<usize>

Write a buffer into this writer, returning how many bytes were written. Read more
source§

#### fn flush(&mut self) -> Result<()>

Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
1.36.0 · source§

#### fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

Like `write`, except that it writes from a slice of buffers. Read more
source§

#### fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (`can_vector`)
Determines if this `Write`r has an efficient `write_vectored` implementation. Read more
1.0.0 · source§

#### fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

Attempts to write an entire buffer into this writer. Read more
source§

#### fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

🔬This is a nightly-only experimental API. (`write_all_vectored`)
Attempts to write multiple buffers into this writer. Read more
1.0.0 · source§

#### fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

Writes a formatted string into this writer, returning any error encountered. Read more
1.0.0 · source§

#### fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Creates a “by reference” adapter for this instance of `Write`. Read more

## Auto Trait Implementations§

§

### impl Freeze for FileLock

§

### impl RefUnwindSafe for FileLock

§

### impl Send for FileLock

§

### impl Sync for FileLock

§

### impl Unpin for FileLock

§

### impl UnwindSafe for FileLock

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

§

### impl<T> Pointable for T

§

#### const ALIGN: usize = _

The alignment of pointer.
§

#### type Init = T

The type for initializers.
§

#### unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

#### unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

#### unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

#### unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

### impl<T> Same for T

§

#### type Output = T

Should always be `Self`
source§

### impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

#### 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>,

§

#### 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<V, T> VZip<V> for T
where V: MultiLane<T>,

§

#### fn vzip(self) -> V

§

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

### impl<W> Writer for W
where W: Write,

§

#### fn write(&mut self, slice: &[u8]) -> Result<(), Error>

Write the given DER-encoded bytes as output.
§

#### fn write_byte(&mut self, byte: u8) -> Result<(), Error>

Write a single byte.
source§

### impl<T> SmartSubtransportStream for T
where T: Read + Write + Send + 'static,

## 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: 32 bytes