pub struct View<'a> { /* private fields */ }Expand description
A bounded window over one address space.
Implementations§
Source§impl<'a> View<'a>
impl<'a> View<'a>
Sourcepub fn over_retained(bytes: &'a [u8]) -> View<'a>
pub fn over_retained(bytes: &'a [u8]) -> View<'a>
Bounded window over retained bytes that left the live space chain.
Prefer views returned by DecodeContext. This
constructor exists for opportunistic scanners over owned payloads that
were copied out of the arena; locations report SpaceId::ROOT.
Sourcepub fn location(self) -> SourceLocation
pub fn location(self) -> SourceLocation
Returns this view’s current source location.
Sourcepub fn location_at(self, offset: usize) -> SourceLocation
pub fn location_at(self, offset: usize) -> SourceLocation
Returns a source location at an absolute offset in this view’s space.
Sourcepub fn take(&mut self, count: usize) -> Option<&'a [u8]>
pub fn take(&mut self, count: usize) -> Option<&'a [u8]>
Takes count bytes, advancing only on success.
Sourcepub fn array<const N: usize>(&mut self) -> Option<[u8; N]>
pub fn array<const N: usize>(&mut self) -> Option<[u8; N]>
Takes a fixed-size byte array, advancing only on success.
Sourcepub fn seek(&mut self, position: usize) -> Option<()>
pub fn seek(&mut self, position: usize) -> Option<()>
Moves to an absolute offset, honoring the stored lower bound.
Sourcepub fn child(self, start: usize, end: usize) -> Option<View<'a>>
pub fn child(self, start: usize, end: usize) -> Option<View<'a>>
Returns an exactly contained child window.
Sourcepub fn counted(
self,
count: u64,
min_element_size: usize,
) -> Option<BoundedCount>
pub fn counted( self, count: u64, min_element_size: usize, ) -> Option<BoundedCount>
Proves a declared element count could fit in the unread bytes.
Sourcepub fn read_counted<T>(
&mut self,
count: u64,
element_size: usize,
read: impl FnMut(&mut Self) -> Option<T>,
) -> Option<Vec<T>>
pub fn read_counted<T>( &mut self, count: u64, element_size: usize, read: impl FnMut(&mut Self) -> Option<T>, ) -> Option<Vec<T>>
Reads count elements of at least element_size encoded bytes each.
The count is validated with View::counted before any allocation, and
the reader closure’s first failure aborts the read.
Sourcepub fn utf16_le(&mut self, count: usize) -> Option<String>
pub fn utf16_le(&mut self, count: usize) -> Option<String>
Decodes count UTF-16LE code units from the current position.
Strict from_utf16; unpaired surrogates and a truncated window yield
None. Does not advance on failure.
Sourcepub fn utf16le_at(
bytes: &[u8],
offset: usize,
count: usize,
) -> Option<(String, usize)>
pub fn utf16le_at( bytes: &[u8], offset: usize, count: usize, ) -> Option<(String, usize)>
Decodes count UTF-16LE code units at offset and returns the string
and end offset.
Sequential readers should keep a live View and call View::utf16_le
instead.
Sourcepub fn req_take(&mut self, count: usize) -> Result<&'a [u8], ParseError>
pub fn req_take(&mut self, count: usize) -> Result<&'a [u8], ParseError>
Required-read mirror of View::take.
Source§impl View<'_>
impl View<'_>
Sourcepub fn req_u16_le(&mut self) -> Result<u16, ParseError>
pub fn req_u16_le(&mut self) -> Result<u16, ParseError>
Required-read mirror of View::u16_le.
Sourcepub fn u16_le_at(bytes: &[u8], offset: usize) -> Option<u16>
pub fn u16_le_at(bytes: &[u8], offset: usize) -> Option<u16>
Offset probe of a u16 over retained bytes. Sequential readers should keep a live View and call View::u16_le instead.
Sourcepub fn req_i16_le(&mut self) -> Result<i16, ParseError>
pub fn req_i16_le(&mut self) -> Result<i16, ParseError>
Required-read mirror of View::i16_le.
Sourcepub fn i16_le_at(bytes: &[u8], offset: usize) -> Option<i16>
pub fn i16_le_at(bytes: &[u8], offset: usize) -> Option<i16>
Offset probe of a i16 over retained bytes. Sequential readers should keep a live View and call View::i16_le instead.
Sourcepub fn req_u32_le(&mut self) -> Result<u32, ParseError>
pub fn req_u32_le(&mut self) -> Result<u32, ParseError>
Required-read mirror of View::u32_le.
Sourcepub fn u32_le_at(bytes: &[u8], offset: usize) -> Option<u32>
pub fn u32_le_at(bytes: &[u8], offset: usize) -> Option<u32>
Offset probe of a u32 over retained bytes. Sequential readers should keep a live View and call View::u32_le instead.
Sourcepub fn req_i32_le(&mut self) -> Result<i32, ParseError>
pub fn req_i32_le(&mut self) -> Result<i32, ParseError>
Required-read mirror of View::i32_le.
Sourcepub fn i32_le_at(bytes: &[u8], offset: usize) -> Option<i32>
pub fn i32_le_at(bytes: &[u8], offset: usize) -> Option<i32>
Offset probe of a i32 over retained bytes. Sequential readers should keep a live View and call View::i32_le instead.
Sourcepub fn req_u64_le(&mut self) -> Result<u64, ParseError>
pub fn req_u64_le(&mut self) -> Result<u64, ParseError>
Required-read mirror of View::u64_le.
Sourcepub fn u64_le_at(bytes: &[u8], offset: usize) -> Option<u64>
pub fn u64_le_at(bytes: &[u8], offset: usize) -> Option<u64>
Offset probe of a u64 over retained bytes. Sequential readers should keep a live View and call View::u64_le instead.
Sourcepub fn req_i64_le(&mut self) -> Result<i64, ParseError>
pub fn req_i64_le(&mut self) -> Result<i64, ParseError>
Required-read mirror of View::i64_le.
Sourcepub fn i64_le_at(bytes: &[u8], offset: usize) -> Option<i64>
pub fn i64_le_at(bytes: &[u8], offset: usize) -> Option<i64>
Offset probe of a i64 over retained bytes. Sequential readers should keep a live View and call View::i64_le instead.
Sourcepub fn req_f32_le(&mut self) -> Result<f32, ParseError>
pub fn req_f32_le(&mut self) -> Result<f32, ParseError>
Required-read mirror of View::f32_le.
Sourcepub fn f32_le_at(bytes: &[u8], offset: usize) -> Option<f32>
pub fn f32_le_at(bytes: &[u8], offset: usize) -> Option<f32>
Offset probe of a f32 over retained bytes. Sequential readers should keep a live View and call View::f32_le instead.
Sourcepub fn req_f64_le(&mut self) -> Result<f64, ParseError>
pub fn req_f64_le(&mut self) -> Result<f64, ParseError>
Required-read mirror of View::f64_le.
Sourcepub fn f64_le_at(bytes: &[u8], offset: usize) -> Option<f64>
pub fn f64_le_at(bytes: &[u8], offset: usize) -> Option<f64>
Offset probe of a f64 over retained bytes. Sequential readers should keep a live View and call View::f64_le instead.
Sourcepub fn req_u16_be(&mut self) -> Result<u16, ParseError>
pub fn req_u16_be(&mut self) -> Result<u16, ParseError>
Required-read mirror of View::u16_be.
Sourcepub fn u16_be_at(bytes: &[u8], offset: usize) -> Option<u16>
pub fn u16_be_at(bytes: &[u8], offset: usize) -> Option<u16>
Offset probe of a u16 over retained bytes. Sequential readers should keep a live View and call View::u16_be instead.
Sourcepub fn req_i16_be(&mut self) -> Result<i16, ParseError>
pub fn req_i16_be(&mut self) -> Result<i16, ParseError>
Required-read mirror of View::i16_be.
Sourcepub fn i16_be_at(bytes: &[u8], offset: usize) -> Option<i16>
pub fn i16_be_at(bytes: &[u8], offset: usize) -> Option<i16>
Offset probe of a i16 over retained bytes. Sequential readers should keep a live View and call View::i16_be instead.
Sourcepub fn req_u32_be(&mut self) -> Result<u32, ParseError>
pub fn req_u32_be(&mut self) -> Result<u32, ParseError>
Required-read mirror of View::u32_be.
Sourcepub fn u32_be_at(bytes: &[u8], offset: usize) -> Option<u32>
pub fn u32_be_at(bytes: &[u8], offset: usize) -> Option<u32>
Offset probe of a u32 over retained bytes. Sequential readers should keep a live View and call View::u32_be instead.
Sourcepub fn req_i32_be(&mut self) -> Result<i32, ParseError>
pub fn req_i32_be(&mut self) -> Result<i32, ParseError>
Required-read mirror of View::i32_be.
Sourcepub fn i32_be_at(bytes: &[u8], offset: usize) -> Option<i32>
pub fn i32_be_at(bytes: &[u8], offset: usize) -> Option<i32>
Offset probe of a i32 over retained bytes. Sequential readers should keep a live View and call View::i32_be instead.
Sourcepub fn req_u64_be(&mut self) -> Result<u64, ParseError>
pub fn req_u64_be(&mut self) -> Result<u64, ParseError>
Required-read mirror of View::u64_be.
Sourcepub fn u64_be_at(bytes: &[u8], offset: usize) -> Option<u64>
pub fn u64_be_at(bytes: &[u8], offset: usize) -> Option<u64>
Offset probe of a u64 over retained bytes. Sequential readers should keep a live View and call View::u64_be instead.
Sourcepub fn req_i64_be(&mut self) -> Result<i64, ParseError>
pub fn req_i64_be(&mut self) -> Result<i64, ParseError>
Required-read mirror of View::i64_be.
Sourcepub fn i64_be_at(bytes: &[u8], offset: usize) -> Option<i64>
pub fn i64_be_at(bytes: &[u8], offset: usize) -> Option<i64>
Offset probe of a i64 over retained bytes. Sequential readers should keep a live View and call View::i64_be instead.
Sourcepub fn req_f32_be(&mut self) -> Result<f32, ParseError>
pub fn req_f32_be(&mut self) -> Result<f32, ParseError>
Required-read mirror of View::f32_be.
Sourcepub fn f32_be_at(bytes: &[u8], offset: usize) -> Option<f32>
pub fn f32_be_at(bytes: &[u8], offset: usize) -> Option<f32>
Offset probe of a f32 over retained bytes. Sequential readers should keep a live View and call View::f32_be instead.
Sourcepub fn req_f64_be(&mut self) -> Result<f64, ParseError>
pub fn req_f64_be(&mut self) -> Result<f64, ParseError>
Required-read mirror of View::f64_be.