Struct binrw::io::NoSeek

source ·
pub struct NoSeek<T> { /* private fields */ }
Expand description

A wrapper that provides a limited implementation of Seek for unseekable Read and Write streams.

This is useful when reading or writing from unseekable streams where binrw does not actually need to seek to successfully parse or write the data.

Implementations§

source§

impl<T> NoSeek<T>

source

pub fn new(inner: T) -> Self

Creates a new seekable wrapper for the given value.

source

pub fn get_mut(&mut self) -> &mut T

Gets a mutable reference to the underlying value.

source

pub fn get_ref(&self) -> &T

Gets a reference to the underlying value.

source

pub fn into_inner(self) -> T

Consumes this wrapper, returning the underlying value.

Trait Implementations§

source§

impl<T: Read> Read for NoSeek<T>

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

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

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

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

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

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

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

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

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

fn is_read_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Reader has an efficient read_vectored implementation. 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 Selfwhere 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<T> Seek for NoSeek<T>

source§

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

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

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

Returns the current seek position from the start of the 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
source§

impl<T: Write> Write for NoSeek<T>

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

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

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

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

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

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored implementation. 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 Selfwhere Self: Sized,

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

Auto Trait Implementations§

§

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

§

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

§

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

§

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

§

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

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<R> BinReaderExt for Rwhere R: Read + Seek,

source§

fn read_type<'a, T>(&mut self, endian: Endian) -> BinResult<T>where T: BinRead, T::Args<'a>: Required + Clone,

Read T from the reader with the given byte order. Read more
source§

fn read_be<'a, T>(&mut self) -> BinResult<T>where T: BinRead, T::Args<'a>: Required + Clone,

Read T from the reader assuming big-endian byte order. Read more
source§

fn read_le<'a, T>(&mut self) -> BinResult<T>where T: BinRead, T::Args<'a>: Required + Clone,

Read T from the reader assuming little-endian byte order. Read more
source§

fn read_ne<'a, T>(&mut self) -> BinResult<T>where T: BinRead, T::Args<'a>: Required + Clone,

Read T from the reader assuming native-endian byte order. Read more
source§

fn read_type_args<'a, T>( &mut self, endian: Endian, args: T::Args<'a> ) -> BinResult<T>where T: BinRead, T::Args<'a>: Clone,

Read T from the reader with the given byte order and arguments. Read more
source§

fn read_be_args<'a, T>(&mut self, args: T::Args<'a>) -> BinResult<T>where T: BinRead, T::Args<'a>: Clone,

Read T from the reader, assuming big-endian byte order, using the given arguments. Read more
source§

fn read_le_args<'a, T>(&mut self, args: T::Args<'a>) -> BinResult<T>where T: BinRead, T::Args<'a>: Clone,

Read T from the reader, assuming little-endian byte order, using the given arguments. Read more
source§

fn read_ne_args<'a, T>(&mut self, args: T::Args<'a>) -> BinResult<T>where T: BinRead, T::Args<'a>: Clone,

Read T from the reader, assuming native-endian byte order, using the given arguments. Read more
source§

impl<W> BinWriterExt for Wwhere W: Write + Seek,

source§

fn write_type<T: BinWrite>( &mut self, value: &T, endian: Endian ) -> BinResult<()>where for<'a> T::Args<'a>: Required,

Write T to the writer with the given byte order. Read more
source§

fn write_be<T: BinWrite>(&mut self, value: &T) -> BinResult<()>where for<'a> T::Args<'a>: Required,

Write T to the writer assuming big-endian byte order. Read more
source§

fn write_le<T: BinWrite>(&mut self, value: &T) -> BinResult<()>where for<'a> T::Args<'a>: Required,

Write T to the writer assuming little-endian byte order. Read more
source§

fn write_ne<T: BinWrite>(&mut self, value: &T) -> BinResult<()>where for<'a> T::Args<'a>: Required,

Write T to the writer assuming native-endian byte order. Read more
source§

fn write_type_args<T: BinWrite>( &mut self, value: &T, endian: Endian, args: T::Args<'_> ) -> BinResult<()>

Write T to the writer with the given byte order and arguments. Read more
source§

fn write_be_args<T: BinWrite>( &mut self, value: &T, args: T::Args<'_> ) -> BinResult<()>

Write T to the writer, assuming big-endian byte order, using the given arguments. Read more
source§

fn write_le_args<T: BinWrite>( &mut self, value: &T, args: T::Args<'_> ) -> BinResult<()>

Write T to the writer, assuming little-endian byte order, using the given arguments. Read more
source§

fn write_ne_args<T: BinWrite>( &mut self, value: &T, args: T::Args<'_> ) -> BinResult<()>

Write T to the writer, assuming native-endian byte order, using the given arguments. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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.

source§

impl<T, U> Into<U> for Twhere 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> TakeSeekExt for Twhere T: Read + Seek,

source§

fn take_seek(self, limit: u64) -> TakeSeek<T>

Creates an adapter which will read at most limit bytes from the wrapped stream.
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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.