Trait positioned_io::WriteAt
[−]
[src]
pub trait WriteAt { fn write_at(&mut self, pos: u64, buf: &[u8]) -> Result<usize>; fn flush(&mut self) -> Result<()>; fn write_all_at(&mut self, pos: u64, buf: &[u8]) -> Result<()> { ... } }
Trait for writing at an offset.
Implementations should be able to write bytes at an offset, without changing any sort of write-position. Self should not change at all.
Examples
use positioned_io::WriteAt; use byteorder::{ByteOrder, LittleEndian}; // Put the integer in a buffer. let mut buf = vec![0; 4]; LittleEndian::write_u32(&mut buf, 1234); // Write it to the file. let mut file = try!(OpenOptions::new().write(true).open("foo.data")); try!(file.write_all_at(1 << 20, &buf));
Required Methods
fn write_at(&mut self, pos: u64, buf: &[u8]) -> Result<usize>
Write a buffer at an offset, returning the number of bytes written.
This function may write fewer bytes than the size of buf
, for example if it is
interrupted.
See Write::write()
.
fn flush(&mut self) -> Result<()>
Flush this writer, ensuring that any buffered data is written.
This should rarely do anything, since buffering is not very useful for positioned writes.
Provided Methods
fn write_all_at(&mut self, pos: u64, buf: &[u8]) -> Result<()>
Write a complete buffer at an offset.
If only a lesser number of bytes can be written, will yield an error.
Implementors
impl<I, E: ByteOrder> WriteAt for ByteIo<I, E> where
I: WriteAt,impl<I> WriteAt for Slice<I> where
I: WriteAt,impl WriteAt for File
impl<'a> WriteAt for &'a mut [u8]
impl WriteAt for Vec<u8>
impl<'a, W: WriteAt + ?Sized> WriteAt for &'a mut W
impl<'a, W> WriteAt for &'a RefCell<W> where
W: WriteAt,