pub struct Leb128Reader<R, P = NonStrict> { /* private fields */ }Expand description
Reader wrapper for LEB128 integers.
The decoding policy is selected by the P type parameter. Use
Leb128Reader<R, NonStrict> for permissive decoding and
Leb128Reader<R, Strict> for canonical-only decoding.
§Target-width integers
usize and isize methods use the current Rust target’s pointer width.
Prefer fixed-width integer methods such as read_u64 or read_i64 for
persistent files and cross-platform protocols.
Implementations§
Source§impl<R, P> Leb128Reader<R, P>where
P: DecodePolicy,
impl<R, P> Leb128Reader<R, P>where
P: DecodePolicy,
Sourcepub const fn is_strict(&self) -> bool
pub const fn is_strict(&self) -> bool
Returns whether this reader rejects non-canonical encodings.
Sourcepub fn into_inner(self) -> R
pub fn into_inner(self) -> R
Consumes this wrapper and returns the underlying reader.
Source§impl<R> Leb128Reader<R, NonStrict>where
R: Read,
impl<R> Leb128Reader<R, NonStrict>where
R: Read,
Sourcepub fn read_usize(&mut self) -> Result<usize>
pub fn read_usize(&mut self) -> Result<usize>
Reads an unsigned LEB128 usize.
Sourcepub fn read_isize(&mut self) -> Result<isize>
pub fn read_isize(&mut self) -> Result<isize>
Reads a signed LEB128 isize.
Sourcepub fn read_utf8_string(&mut self, max_len: usize) -> Result<String>
pub fn read_utf8_string(&mut self, max_len: usize) -> Result<String>
Reads a UTF-8 string prefixed by an unsigned LEB128 byte length.
The length prefix is decoded as usize, so this format is
target-width dependent. Prefer a fixed-width length prefix for
persistent files and cross-platform protocols.
§Parameters
max_len: Maximum accepted UTF-8 payload length in bytes.
§Returns
Returns the decoded UTF-8 string.
§Errors
Returns an I/O error for length or payload reads, std::io::ErrorKind::InvalidData
when the encoded length exceeds max_len, or std::io::ErrorKind::InvalidData
when the payload is not valid UTF-8.
Source§impl<R> Leb128Reader<R, Strict>where
R: Read,
impl<R> Leb128Reader<R, Strict>where
R: Read,
Sourcepub fn read_usize(&mut self) -> Result<usize>
pub fn read_usize(&mut self) -> Result<usize>
Reads an unsigned LEB128 usize.
Sourcepub fn read_isize(&mut self) -> Result<isize>
pub fn read_isize(&mut self) -> Result<isize>
Reads a signed LEB128 isize.
Sourcepub fn read_utf8_string(&mut self, max_len: usize) -> Result<String>
pub fn read_utf8_string(&mut self, max_len: usize) -> Result<String>
Reads a UTF-8 string prefixed by an unsigned LEB128 byte length.
The length prefix is decoded as usize, so this format is
target-width dependent. Prefer a fixed-width length prefix for
persistent files and cross-platform protocols.
§Parameters
max_len: Maximum accepted UTF-8 payload length in bytes.
§Returns
Returns the decoded UTF-8 string.
§Errors
Returns an I/O error for length or payload reads, std::io::ErrorKind::InvalidData
when the encoded length exceeds max_len, or std::io::ErrorKind::InvalidData
when the payload is not valid UTF-8.
Trait Implementations§
Source§impl<R, P> Read for Leb128Reader<R, P>where
R: Read,
impl<R, P> Read for Leb128Reader<R, P>where
R: Read,
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
buf. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
buf. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
buf. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf)Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf)cursor. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Read. Read more1.0.0 · Source§fn chain<R>(self, next: R) -> Chain<Self, R>
fn chain<R>(self, next: R) -> Chain<Self, R>
Source§impl<R, P> Seek for Leb128Reader<R, P>where
R: Seek,
impl<R, P> Seek for Leb128Reader<R, P>where
R: Seek,
1.55.0 · Source§fn rewind(&mut self) -> Result<(), Error>
fn rewind(&mut self) -> Result<(), Error>
Source§fn stream_len(&mut self) -> Result<u64, Error>
fn stream_len(&mut self) -> Result<u64, Error>
seek_stream_len)Auto Trait Implementations§
impl<R, P> Freeze for Leb128Reader<R, P>where
R: Freeze,
impl<R, P> RefUnwindSafe for Leb128Reader<R, P>where
R: RefUnwindSafe,
impl<R, P> Send for Leb128Reader<R, P>where
R: Send,
impl<R, P> Sync for Leb128Reader<R, P>where
R: Sync,
impl<R, P> Unpin for Leb128Reader<R, P>where
R: Unpin,
impl<R, P> UnsafeUnpin for Leb128Reader<R, P>where
R: UnsafeUnpin,
impl<R, P> UnwindSafe for Leb128Reader<R, P>where
R: UnwindSafe,
Blanket Implementations§
Source§impl<R> BinaryReadExt for R
impl<R> BinaryReadExt for R
Source§fn read_u16(&mut self, byte_order: ByteOrder) -> Result<u16>
fn read_u16(&mut self, byte_order: ByteOrder) -> Result<u16>
Source§fn read_u16_be(&mut self) -> Result<u16>
fn read_u16_be(&mut self) -> Result<u16>
Source§fn read_u16_le(&mut self) -> Result<u16>
fn read_u16_le(&mut self) -> Result<u16>
Source§fn read_u32(&mut self, byte_order: ByteOrder) -> Result<u32>
fn read_u32(&mut self, byte_order: ByteOrder) -> Result<u32>
Source§fn read_u32_be(&mut self) -> Result<u32>
fn read_u32_be(&mut self) -> Result<u32>
Source§fn read_u32_le(&mut self) -> Result<u32>
fn read_u32_le(&mut self) -> Result<u32>
Source§fn read_u64(&mut self, byte_order: ByteOrder) -> Result<u64>
fn read_u64(&mut self, byte_order: ByteOrder) -> Result<u64>
Source§fn read_u64_be(&mut self) -> Result<u64>
fn read_u64_be(&mut self) -> Result<u64>
Source§fn read_u64_le(&mut self) -> Result<u64>
fn read_u64_le(&mut self) -> Result<u64>
Source§fn read_u128(&mut self, byte_order: ByteOrder) -> Result<u128>
fn read_u128(&mut self, byte_order: ByteOrder) -> Result<u128>
Source§fn read_u128_be(&mut self) -> Result<u128>
fn read_u128_be(&mut self) -> Result<u128>
Source§fn read_u128_le(&mut self) -> Result<u128>
fn read_u128_le(&mut self) -> Result<u128>
Source§fn read_i16(&mut self, byte_order: ByteOrder) -> Result<i16>
fn read_i16(&mut self, byte_order: ByteOrder) -> Result<i16>
Source§fn read_i16_be(&mut self) -> Result<i16>
fn read_i16_be(&mut self) -> Result<i16>
Source§fn read_i16_le(&mut self) -> Result<i16>
fn read_i16_le(&mut self) -> Result<i16>
Source§fn read_i32(&mut self, byte_order: ByteOrder) -> Result<i32>
fn read_i32(&mut self, byte_order: ByteOrder) -> Result<i32>
Source§fn read_i32_be(&mut self) -> Result<i32>
fn read_i32_be(&mut self) -> Result<i32>
Source§fn read_i32_le(&mut self) -> Result<i32>
fn read_i32_le(&mut self) -> Result<i32>
Source§fn read_i64(&mut self, byte_order: ByteOrder) -> Result<i64>
fn read_i64(&mut self, byte_order: ByteOrder) -> Result<i64>
Source§fn read_i64_be(&mut self) -> Result<i64>
fn read_i64_be(&mut self) -> Result<i64>
Source§fn read_i64_le(&mut self) -> Result<i64>
fn read_i64_le(&mut self) -> Result<i64>
Source§fn read_i128(&mut self, byte_order: ByteOrder) -> Result<i128>
fn read_i128(&mut self, byte_order: ByteOrder) -> Result<i128>
Source§fn read_i128_be(&mut self) -> Result<i128>
fn read_i128_be(&mut self) -> Result<i128>
Source§fn read_i128_le(&mut self) -> Result<i128>
fn read_i128_le(&mut self) -> Result<i128>
Source§fn read_f32(&mut self, byte_order: ByteOrder) -> Result<f32>
fn read_f32(&mut self, byte_order: ByteOrder) -> Result<f32>
Source§fn read_f32_be(&mut self) -> Result<f32>
fn read_f32_be(&mut self) -> Result<f32>
Source§fn read_f32_le(&mut self) -> Result<f32>
fn read_f32_le(&mut self) -> Result<f32>
Source§fn read_f64(&mut self, byte_order: ByteOrder) -> Result<f64>
fn read_f64(&mut self, byte_order: ByteOrder) -> Result<f64>
Source§fn read_f64_be(&mut self) -> Result<f64>
fn read_f64_be(&mut self) -> Result<f64>
Source§fn read_f64_le(&mut self) -> Result<f64>
fn read_f64_le(&mut self) -> Result<f64>
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<R> Leb128ReadExt for R
impl<R> Leb128ReadExt for R
Source§fn read_uleb_u8(&mut self) -> Result<u8>
fn read_uleb_u8(&mut self) -> Result<u8>
u8.Source§fn read_uleb_u8_strict(&mut self) -> Result<u8>
fn read_uleb_u8_strict(&mut self) -> Result<u8>
u8.Source§fn read_uleb_u16(&mut self) -> Result<u16>
fn read_uleb_u16(&mut self) -> Result<u16>
u16.Source§fn read_uleb_u16_strict(&mut self) -> Result<u16>
fn read_uleb_u16_strict(&mut self) -> Result<u16>
u16.Source§fn read_uleb_u32(&mut self) -> Result<u32>
fn read_uleb_u32(&mut self) -> Result<u32>
u32.Source§fn read_uleb_u32_strict(&mut self) -> Result<u32>
fn read_uleb_u32_strict(&mut self) -> Result<u32>
u32.Source§fn read_uleb_u64(&mut self) -> Result<u64>
fn read_uleb_u64(&mut self) -> Result<u64>
u64.Source§fn read_uleb_u64_strict(&mut self) -> Result<u64>
fn read_uleb_u64_strict(&mut self) -> Result<u64>
u64.Source§fn read_uleb_u128(&mut self) -> Result<u128>
fn read_uleb_u128(&mut self) -> Result<u128>
u128.Source§fn read_uleb_u128_strict(&mut self) -> Result<u128>
fn read_uleb_u128_strict(&mut self) -> Result<u128>
u128.Source§fn read_uleb_usize(&mut self) -> Result<usize>
fn read_uleb_usize(&mut self) -> Result<usize>
usize.Source§fn read_uleb_usize_strict(&mut self) -> Result<usize>
fn read_uleb_usize_strict(&mut self) -> Result<usize>
usize.Source§fn read_sleb_i8(&mut self) -> Result<i8>
fn read_sleb_i8(&mut self) -> Result<i8>
i8.Source§fn read_sleb_i8_strict(&mut self) -> Result<i8>
fn read_sleb_i8_strict(&mut self) -> Result<i8>
i8.Source§fn read_sleb_i16(&mut self) -> Result<i16>
fn read_sleb_i16(&mut self) -> Result<i16>
i16.Source§fn read_sleb_i16_strict(&mut self) -> Result<i16>
fn read_sleb_i16_strict(&mut self) -> Result<i16>
i16.Source§fn read_sleb_i32(&mut self) -> Result<i32>
fn read_sleb_i32(&mut self) -> Result<i32>
i32.Source§fn read_sleb_i32_strict(&mut self) -> Result<i32>
fn read_sleb_i32_strict(&mut self) -> Result<i32>
i32.Source§fn read_sleb_i64(&mut self) -> Result<i64>
fn read_sleb_i64(&mut self) -> Result<i64>
i64.Source§fn read_sleb_i64_strict(&mut self) -> Result<i64>
fn read_sleb_i64_strict(&mut self) -> Result<i64>
i64.Source§fn read_sleb_i128(&mut self) -> Result<i128>
fn read_sleb_i128(&mut self) -> Result<i128>
i128.Source§fn read_sleb_i128_strict(&mut self) -> Result<i128>
fn read_sleb_i128_strict(&mut self) -> Result<i128>
i128.Source§fn read_sleb_isize(&mut self) -> Result<isize>
fn read_sleb_isize(&mut self) -> Result<isize>
isize.Source§fn read_sleb_isize_strict(&mut self) -> Result<isize>
fn read_sleb_isize_strict(&mut self) -> Result<isize>
isize.Source§impl<T> ReadExt for T
impl<T> ReadExt for T
Source§unsafe fn read_unchecked(
&mut self,
buffer: &mut [u8],
start_index: usize,
count: usize,
) -> Result<usize, Error>
unsafe fn read_unchecked( &mut self, buffer: &mut [u8], start_index: usize, count: usize, ) -> Result<usize, Error>
buffer without checking the range bounds
in release builds. Read moreSource§unsafe fn read_exact_or_eof_unchecked(
&mut self,
buffer: &mut [u8],
start_index: usize,
count: usize,
) -> Result<usize, Error>
unsafe fn read_exact_or_eof_unchecked( &mut self, buffer: &mut [u8], start_index: usize, count: usize, ) -> Result<usize, Error>
buffer until that range is full or EOF is
reached, without checking the range bounds in release builds. Read moreSource§unsafe fn read_exact_unchecked(
&mut self,
buffer: &mut [u8],
start_index: usize,
count: usize,
) -> Result<(), Error>
unsafe fn read_exact_unchecked( &mut self, buffer: &mut [u8], start_index: usize, count: usize, ) -> Result<(), Error>
count bytes into a range of buffer without checking
the range bounds in release builds. Read moreSource§fn read_exact_or_eof(&mut self, buffer: &mut [u8]) -> Result<usize, Error>
fn read_exact_or_eof(&mut self, buffer: &mut [u8]) -> Result<usize, Error>
buffer is full or EOF is reached. Read moreSource§fn read_exact_array<const N: usize>(&mut self) -> Result<[u8; N], Error>
fn read_exact_array<const N: usize>(&mut self) -> Result<[u8; N], Error>
N bytes into a stack-allocated array. Read moreSource§fn read_exact_vec_limited(
&mut self,
len: usize,
max_len: usize,
) -> Result<Vec<u8>, Error>
fn read_exact_vec_limited( &mut self, len: usize, max_len: usize, ) -> Result<Vec<u8>, Error>
len bytes into a new vector after checking a limit. Read moreSource§fn read_exact_vec_limited_into(
&mut self,
output: &mut Vec<u8>,
len: usize,
max_len: usize,
) -> Result<(), Error>
fn read_exact_vec_limited_into( &mut self, output: &mut Vec<u8>, len: usize, max_len: usize, ) -> Result<(), Error>
Source§fn discard_exact_or_eof(&mut self, bytes: u64) -> Result<u64, Error>
fn discard_exact_or_eof(&mut self, bytes: u64) -> Result<u64, Error>
bytes bytes from this reader. Read moreSource§fn copy_to(&mut self, writer: &mut dyn Write) -> Result<u64, Error>
fn copy_to(&mut self, writer: &mut dyn Write) -> Result<u64, Error>
writer. Read moreSource§fn copy_to_at_most(
&mut self,
writer: &mut dyn Write,
max_bytes: u64,
) -> Result<u64, Error>
fn copy_to_at_most( &mut self, writer: &mut dyn Write, max_bytes: u64, ) -> Result<u64, Error>
Source§fn copy_to_end_limited(
&mut self,
writer: &mut dyn Write,
max_bytes: u64,
) -> Result<u64, Error>
fn copy_to_end_limited( &mut self, writer: &mut dyn Write, max_bytes: u64, ) -> Result<u64, Error>
max_bytes. Read moreSource§fn read_to_end_limited(&mut self, max_len: usize) -> Result<Vec<u8>, Error>
fn read_to_end_limited(&mut self, max_len: usize) -> Result<Vec<u8>, Error>
Source§fn read_to_end_limited_into(
&mut self,
output: &mut Vec<u8>,
max_len: usize,
) -> Result<usize, Error>
fn read_to_end_limited_into( &mut self, output: &mut Vec<u8>, max_len: usize, ) -> Result<usize, Error>
output with a maximum accepted length. Read moreSource§impl<T> ReadSeekExt for T
impl<T> ReadSeekExt for T
Source§impl<T> StringReadExt for T
impl<T> StringReadExt for T
Source§fn read_utf8_payload(
&mut self,
len: usize,
max_len: usize,
) -> Result<String, Error>
fn read_utf8_payload( &mut self, len: usize, max_len: usize, ) -> Result<String, Error>
Source§fn read_utf8_string_uleb(&mut self, max_len: usize) -> Result<String, Error>
fn read_utf8_string_uleb(&mut self, max_len: usize) -> Result<String, Error>
Source§fn read_utf8_string_uleb_strict(
&mut self,
max_len: usize,
) -> Result<String, Error>
fn read_utf8_string_uleb_strict( &mut self, max_len: usize, ) -> Result<String, Error>
Source§fn read_utf8_string_u16(
&mut self,
byte_order: ByteOrder,
max_len: usize,
) -> Result<String, Error>
fn read_utf8_string_u16( &mut self, byte_order: ByteOrder, max_len: usize, ) -> Result<String, Error>
u16 byte-length prefix. Read moreSource§fn read_utf8_string_u16_be(&mut self, max_len: usize) -> Result<String, Error>
fn read_utf8_string_u16_be(&mut self, max_len: usize) -> Result<String, Error>
u16 byte-length prefix. Read moreSource§fn read_utf8_string_u16_le(&mut self, max_len: usize) -> Result<String, Error>
fn read_utf8_string_u16_le(&mut self, max_len: usize) -> Result<String, Error>
u16 byte-length prefix. Read moreSource§fn read_utf8_string_u32(
&mut self,
byte_order: ByteOrder,
max_len: usize,
) -> Result<String, Error>
fn read_utf8_string_u32( &mut self, byte_order: ByteOrder, max_len: usize, ) -> Result<String, Error>
u32 byte-length prefix. Read moreSource§impl<R> ZigZagReadExt for R
impl<R> ZigZagReadExt for R
Source§fn read_zig_zag_i8(&mut self) -> Result<i8>
fn read_zig_zag_i8(&mut self) -> Result<i8>
i8.Source§fn read_zig_zag_i8_strict(&mut self) -> Result<i8>
fn read_zig_zag_i8_strict(&mut self) -> Result<i8>
i8.Source§fn read_zig_zag_i16(&mut self) -> Result<i16>
fn read_zig_zag_i16(&mut self) -> Result<i16>
i16.Source§fn read_zig_zag_i16_strict(&mut self) -> Result<i16>
fn read_zig_zag_i16_strict(&mut self) -> Result<i16>
i16.Source§fn read_zig_zag_i32(&mut self) -> Result<i32>
fn read_zig_zag_i32(&mut self) -> Result<i32>
i32.Source§fn read_zig_zag_i32_strict(&mut self) -> Result<i32>
fn read_zig_zag_i32_strict(&mut self) -> Result<i32>
i32.Source§fn read_zig_zag_i64(&mut self) -> Result<i64>
fn read_zig_zag_i64(&mut self) -> Result<i64>
i64.Source§fn read_zig_zag_i64_strict(&mut self) -> Result<i64>
fn read_zig_zag_i64_strict(&mut self) -> Result<i64>
i64.Source§fn read_zig_zag_i128(&mut self) -> Result<i128>
fn read_zig_zag_i128(&mut self) -> Result<i128>
i128.Source§fn read_zig_zag_i128_strict(&mut self) -> Result<i128>
fn read_zig_zag_i128_strict(&mut self) -> Result<i128>
i128.Source§fn read_zig_zag_isize(&mut self) -> Result<isize>
fn read_zig_zag_isize(&mut self) -> Result<isize>
isize.Source§fn read_zig_zag_isize_strict(&mut self) -> Result<isize>
fn read_zig_zag_isize_strict(&mut self) -> Result<isize>
isize.