Trait system_interface::fs::FileIoExt
source · pub trait FileIoExt: IoExt {
Show 21 methods
// Required methods
fn advise(&self, offset: u64, len: u64, advice: Advice) -> Result<()>;
fn allocate(&self, offset: u64, len: u64) -> Result<()>;
fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize>;
fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()>;
fn read_to_end_at(&self, buf: &mut Vec<u8>, offset: u64) -> Result<usize>;
fn read_to_string_at(&self, buf: &mut String, offset: u64) -> Result<usize>;
fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>;
fn append(&self, buf: &[u8]) -> Result<usize>;
fn seek(&self, pos: SeekFrom) -> Result<u64>;
fn stream_position(&self) -> Result<u64>;
// Provided methods
fn read_vectored_at(
&self,
bufs: &mut [IoSliceMut<'_>],
offset: u64
) -> Result<usize> { ... }
fn read_exact_vectored_at(
&self,
bufs: &mut [IoSliceMut<'_>],
offset: u64
) -> Result<()> { ... }
fn is_read_vectored_at(&self) -> bool { ... }
fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()> { ... }
fn write_vectored_at(
&self,
bufs: &[IoSlice<'_>],
offset: u64
) -> Result<usize> { ... }
fn write_all_vectored_at(
&self,
bufs: &mut [IoSlice<'_>],
offset: u64
) -> Result<()> { ... }
fn is_write_vectored_at(&self) -> bool { ... }
fn append_all(&self, buf: &[u8]) -> Result<()> { ... }
fn append_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize> { ... }
fn append_all_vectored(&self, bufs: &mut [IoSlice<'_>]) -> Result<()> { ... }
fn is_append_vectored(&self) -> bool { ... }
}Expand description
Extension trait for std::fs::File and cap_std::fs::File.
Required Methods§
sourcefn advise(&self, offset: u64, len: u64, advice: Advice) -> Result<()>
fn advise(&self, offset: u64, len: u64, advice: Advice) -> Result<()>
Announce the expected access pattern of the data at the given offset.
sourcefn allocate(&self, offset: u64, len: u64) -> Result<()>
fn allocate(&self, offset: u64, len: u64) -> Result<()>
Allocate space in the file, increasing the file size as needed, and ensuring that there are no holes under the given range.
sourcefn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize>
fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<usize>
Reads a number of bytes starting from a given offset.
This is similar to std::os::unix::fs::FileExt::read_at, except it
takes self by immutable reference since the entire side effect is
I/O, and it’s supported on non-Unix platforms including Windows.
sourcefn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()>
fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()>
Reads the exact number of byte required to fill buf from the given offset.
This is similar to std::os::unix::fs::FileExt::read_exact_at,
except it takes self by immutable reference since the entire side
effect is I/O, and it’s supported on non-Unix platforms including
Windows.
sourcefn read_to_end_at(&self, buf: &mut Vec<u8>, offset: u64) -> Result<usize>
fn read_to_end_at(&self, buf: &mut Vec<u8>, offset: u64) -> Result<usize>
Read all bytes, starting at offset, until EOF in this source, placing
them into buf.
sourcefn read_to_string_at(&self, buf: &mut String, offset: u64) -> Result<usize>
fn read_to_string_at(&self, buf: &mut String, offset: u64) -> Result<usize>
Read all bytes, starting at offset, until EOF in this source,
appending them to buf.
sourcefn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>
fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>
Writes a number of bytes starting from a given offset.
This is similar to std::os::unix::fs::FileExt::write_at, except it
takes self by immutable reference since the entire side effect is
I/O, and it’s supported on non-Unix platforms including Windows.
A write past the end of the file extends the file with zero bytes until the point where the write starts.
Contrary to POSIX, on many popular platforms including Linux and FreeBSD, if the file is opened in append mode, this ignores the offset appends the data to the end of the file.
sourcefn append(&self, buf: &[u8]) -> Result<usize>
fn append(&self, buf: &[u8]) -> Result<usize>
Writes a number of bytes at the end of a file.
This leaves the current position of the file unmodified.
This operation is not guaranteed to be atomic with respect to other users of the same open file description.
This operation is less efficient on some platforms than opening the file in append mode and doing regular writes.
sourcefn seek(&self, pos: SeekFrom) -> Result<u64>
fn seek(&self, pos: SeekFrom) -> Result<u64>
Seek to an offset, in bytes, in a stream.
This is similar to std::io::Seek::seek, except it takes self by
immutable reference since the entire side effect is I/O.
sourcefn stream_position(&self) -> Result<u64>
fn stream_position(&self) -> Result<u64>
Returns the current seek position from the start of the stream.
This is similar to std::io::Seek::stream_position, except it’s
available on Rust stable.
This may eventually be implemented by rust-lang/rust#62726.
Provided Methods§
sourcefn read_vectored_at(
&self,
bufs: &mut [IoSliceMut<'_>],
offset: u64
) -> Result<usize>
fn read_vectored_at( &self, bufs: &mut [IoSliceMut<'_>], offset: u64 ) -> Result<usize>
Is to read_vectored what read_at is to read.
sourcefn read_exact_vectored_at(
&self,
bufs: &mut [IoSliceMut<'_>],
offset: u64
) -> Result<()>
fn read_exact_vectored_at( &self, bufs: &mut [IoSliceMut<'_>], offset: u64 ) -> Result<()>
Is to read_exact_vectored what read_exact_at is to read_exact.
sourcefn is_read_vectored_at(&self) -> bool
fn is_read_vectored_at(&self) -> bool
Determines if this FileIoExt implementation has an efficient
read_vectored_at implementation.
sourcefn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>
fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>
Attempts to write an entire buffer starting from a given offset.
This is similar to std::os::unix::fs::FileExt::write_all_at, except
it takes self by immutable reference since the entire side effect is
I/O, and it’s supported on non-Unix platforms including Windows.
A write past the end of the file extends the file with zero bytes until the point where the write starts.
Contrary to POSIX, on many popular platforms including Linux and FreeBSD, if the file is opened in append mode, this ignores the offset appends the data to the end of the file.
sourcefn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>
fn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>
Is to write_vectored what write_at is to write.
sourcefn write_all_vectored_at(
&self,
bufs: &mut [IoSlice<'_>],
offset: u64
) -> Result<()>
fn write_all_vectored_at( &self, bufs: &mut [IoSlice<'_>], offset: u64 ) -> Result<()>
Is to write_all_vectored what write_all_at is to write_all.
sourcefn is_write_vectored_at(&self) -> bool
fn is_write_vectored_at(&self) -> bool
Determines if this FileIoExt implementation has an efficient
write_vectored_at implementation.
sourcefn append_all(&self, buf: &[u8]) -> Result<()>
fn append_all(&self, buf: &[u8]) -> Result<()>
Attempts to write an entire buffer at the end of a file.
This leaves the current position of the file unmodified.
This operation is not guaranteed to be atomic with respect to other users of the same open file description.
This operation is less efficient on some platforms than opening the file in append mode and doing regular writes.
sourcefn append_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize>
fn append_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize>
Is to append what write_vectored is to write.
sourcefn append_all_vectored(&self, bufs: &mut [IoSlice<'_>]) -> Result<()>
fn append_all_vectored(&self, bufs: &mut [IoSlice<'_>]) -> Result<()>
Is to append_all what write_all_vectored is to write_all.
sourcefn is_append_vectored(&self) -> bool
fn is_append_vectored(&self) -> bool
Determines if this FileIoExt implementation has an efficient
append_vectored implementation.
Implementors§
impl<T: AsFilelike + IoExt> FileIoExt for T
Implement FileIoExt for any type which implements AsRawFd.