pub struct BufferReader<'a> { /* private fields */ }Expand description
Decodes values from the WeaveFFI buffer format.
Every read_* method returns BufferDecodeError when the buffer is
exhausted or holds invalid data, so a malformed buffer can never cause an
out-of-bounds read.
Implementations§
Source§impl<'a> BufferReader<'a>
impl<'a> BufferReader<'a>
Sourcepub fn read_bool(&mut self) -> Result<bool, BufferDecodeError>
pub fn read_bool(&mut self) -> Result<bool, BufferDecodeError>
Sourcepub fn read_i8(&mut self) -> Result<i8, BufferDecodeError>
pub fn read_i8(&mut self) -> Result<i8, BufferDecodeError>
Sourcepub fn read_u8(&mut self) -> Result<u8, BufferDecodeError>
pub fn read_u8(&mut self) -> Result<u8, BufferDecodeError>
Sourcepub fn read_i16(&mut self) -> Result<i16, BufferDecodeError>
pub fn read_i16(&mut self) -> Result<i16, BufferDecodeError>
Sourcepub fn read_u16(&mut self) -> Result<u16, BufferDecodeError>
pub fn read_u16(&mut self) -> Result<u16, BufferDecodeError>
Sourcepub fn read_i32(&mut self) -> Result<i32, BufferDecodeError>
pub fn read_i32(&mut self) -> Result<i32, BufferDecodeError>
Read an i32 little-endian. Also decodes C-style enum values and
rich-enum tags.
§Errors
Returns an error when the buffer is exhausted.
Sourcepub fn read_u32(&mut self) -> Result<u32, BufferDecodeError>
pub fn read_u32(&mut self) -> Result<u32, BufferDecodeError>
Sourcepub fn read_i64(&mut self) -> Result<i64, BufferDecodeError>
pub fn read_i64(&mut self) -> Result<i64, BufferDecodeError>
Sourcepub fn read_u64(&mut self) -> Result<u64, BufferDecodeError>
pub fn read_u64(&mut self) -> Result<u64, BufferDecodeError>
Read a u64 little-endian. Also decodes handles.
§Errors
Returns an error when the buffer is exhausted.
Sourcepub fn read_f32(&mut self) -> Result<f32, BufferDecodeError>
pub fn read_f32(&mut self) -> Result<f32, BufferDecodeError>
Read an f32 from its IEEE 754 bits, little-endian.
§Errors
Returns an error when the buffer is exhausted.
Sourcepub fn read_f64(&mut self) -> Result<f64, BufferDecodeError>
pub fn read_f64(&mut self) -> Result<f64, BufferDecodeError>
Read an f64 from its IEEE 754 bits, little-endian.
§Errors
Returns an error when the buffer is exhausted.
Sourcepub fn read_len(&mut self) -> Result<usize, BufferDecodeError>
pub fn read_len(&mut self) -> Result<usize, BufferDecodeError>
Read a length or element count (a u32).
§Errors
Returns an error when the buffer is exhausted or the decoded length exceeds the bytes remaining (which would make follow-up reads fail anyway; rejecting here gives a clearer error).
Sourcepub fn read_string(&mut self) -> Result<String, BufferDecodeError>
pub fn read_string(&mut self) -> Result<String, BufferDecodeError>
Read a string: u32 byte length + UTF-8 bytes.
§Errors
Returns an error when the buffer is exhausted or the bytes are not valid UTF-8.
Sourcepub fn read_bytes(&mut self) -> Result<Vec<u8>, BufferDecodeError>
pub fn read_bytes(&mut self) -> Result<Vec<u8>, BufferDecodeError>
Sourcepub fn read_option_flag(&mut self) -> Result<bool, BufferDecodeError>
pub fn read_option_flag(&mut self) -> Result<bool, BufferDecodeError>
Read an optional’s presence flag.
§Errors
Returns an error when the buffer is exhausted or the flag byte is not
0 or 1.
Sourcepub fn expect_end(&self) -> Result<(), BufferDecodeError>
pub fn expect_end(&self) -> Result<(), BufferDecodeError>
Assert the whole buffer was consumed. Called after decoding a complete value to catch trailing garbage.
§Errors
Returns an error when unconsumed bytes remain.