Trait sync_file::WriteAt

source ·
pub trait WriteAt {
    // Required method
    fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>;

    // Provided methods
    fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()> { ... }
    fn write_vectored_at(
        &self,
        bufs: &[IoSlice<'_>],
        offset: u64
    ) -> Result<usize> { ... }
    fn flush(&self) -> Result<()> { ... }
}
Expand description

The WriteAt trait allows for writing bytes to a source at a given offset.

Additionally, the methods of this trait only require a shared reference, which makes it ideal for parallel use.

Required Methods§

source

fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>

Writes a number of bytes starting from a given offset.

Returns the number of bytes written.

Note that similar to io::Write::write, it is not an error to return a short write.

Provided Methods§

source

fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>

Attempts to write an entire buffer starting from a given offset.

§Errors

This function will return the first error of non-io::ErrorKind::Interrupted kind that write_at returns.

source

fn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>

Like write_at, except that it writes from a slice of buffers.

Data is copied from each buffer in order, with the final buffer read from possibly being only partially consumed. This method must behave as a call to write_at with the buffers concatenated would.

source

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

Flush this output stream, ensuring that all intermediately buffered contents reach their destination.

§Errors

It is considered an error if not all bytes could be written due to I/O errors or EOF being reached.

Implementations on Foreign Types§

source§

impl WriteAt for Sink

source§

fn write_at(&self, buf: &[u8], _offset: u64) -> Result<usize>

source§

fn write_all_at(&self, _buf: &[u8], _offset: u64) -> Result<()>

source§

fn write_vectored_at(&self, bufs: &[IoSlice<'_>], _offset: u64) -> Result<usize>

source§

impl<W> WriteAt for &W
where W: WriteAt + ?Sized,

source§

fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>

source§

fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>

source§

fn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>

source§

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

source§

impl<W> WriteAt for Box<W>
where W: WriteAt + ?Sized,

source§

fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>

source§

fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>

source§

fn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>

source§

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

source§

impl<W> WriteAt for Rc<W>
where W: WriteAt + ?Sized,

source§

fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>

source§

fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>

source§

fn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>

source§

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

source§

impl<W> WriteAt for Arc<W>
where W: WriteAt + ?Sized,

source§

fn write_at(&self, buf: &[u8], offset: u64) -> Result<usize>

source§

fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>

source§

fn write_vectored_at(&self, bufs: &[IoSlice<'_>], offset: u64) -> Result<usize>

source§

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

Implementors§