pub struct SegmentReader<'a> { /* private fields */ }Expand description
Zero-copy segment-aware partial account reader.
Construct with SegmentReader::new. the layout_id is verified up front
so downstream read_* calls can be infallible w.r.t. identity.
Implementations§
Source§impl<'a> SegmentReader<'a>
impl<'a> SegmentReader<'a>
Sourcepub fn new(
bytes: &'a [u8],
layout: &'a LayoutManifest,
) -> Result<Self, ReaderError>
pub fn new( bytes: &'a [u8], layout: &'a LayoutManifest, ) -> Result<Self, ReaderError>
Bind a LayoutManifest to raw bytes, verifying the fingerprint.
Sourcepub unsafe fn new_unchecked(bytes: &'a [u8], layout: &'a LayoutManifest) -> Self
pub unsafe fn new_unchecked(bytes: &'a [u8], layout: &'a LayoutManifest) -> Self
Bind without re-checking the fingerprint. Only use if you’ve already verified identity upstream.
§Safety
The caller promises bytes is a layout-shaped blob.
Sourcepub const fn layout(&self) -> &'a LayoutManifest
pub const fn layout(&self) -> &'a LayoutManifest
Layout manifest this reader was constructed against.
Sourcepub fn field(&self, name: &str) -> Option<&'a FieldDescriptor>
pub fn field(&self, name: &str) -> Option<&'a FieldDescriptor>
Look up a field descriptor by name.
Sourcepub fn offset_of(&self, name: &str) -> Option<usize>
pub fn offset_of(&self, name: &str) -> Option<usize>
Absolute byte offset of a named field (accounts for the
12-byte Hopper header by using offset as field-start; since the
manifest’s FieldDescriptor.offset is already absolute under the
framework’s convention, this is a pass-through).
Sourcepub fn read_raw(&self, name: &str) -> Result<&'a [u8], ReaderError>
pub fn read_raw(&self, name: &str) -> Result<&'a [u8], ReaderError>
Raw byte slice for a named field.
Sourcepub fn read_pubkey(&self, name: &str) -> Result<[u8; 32], ReaderError>
pub fn read_pubkey(&self, name: &str) -> Result<[u8; 32], ReaderError>
Read a 32-byte Solana public key (Pubkey).