pub struct SegmentRegistryMut<'a> { /* private fields */ }Expand description
Mutable view over a segmented account’s registry.
Implementations§
Source§impl<'a> SegmentRegistryMut<'a>
impl<'a> SegmentRegistryMut<'a>
Sourcepub fn from_account_mut(
account_data: &'a mut [u8],
) -> Result<SegmentRegistryMut<'a>, ProgramError>
pub fn from_account_mut( account_data: &'a mut [u8], ) -> Result<SegmentRegistryMut<'a>, ProgramError>
Parse a mutable segment registry from full account data.
Sourcepub fn segment_count(&self) -> usize
pub fn segment_count(&self) -> usize
Number of segments.
Sourcepub fn init(
data: &mut [u8],
specs: &[([u8; 4], u32, u8)],
) -> Result<(), ProgramError>
pub fn init( data: &mut [u8], specs: &[([u8; 4], u32, u8)], ) -> Result<(), ProgramError>
Initialize the registry with segment specifications.
specs is (segment_id, data_size, version) per segment.
Must be called on a freshly zeroed account.
Sourcepub fn entry_mut(
&mut self,
index: usize,
) -> Result<&mut SegmentEntry, ProgramError>
pub fn entry_mut( &mut self, index: usize, ) -> Result<&mut SegmentEntry, ProgramError>
Get a mutable entry by index.
Sourcepub fn find_mut(
&mut self,
id: &[u8; 4],
) -> Result<(usize, &mut SegmentEntry), ProgramError>
pub fn find_mut( &mut self, id: &[u8; 4], ) -> Result<(usize, &mut SegmentEntry), ProgramError>
Find a segment by ID and return mutable entry.
Sourcepub fn segment_data_mut(
&mut self,
id: &[u8; 4],
) -> Result<&mut [u8], ProgramError>
pub fn segment_data_mut( &mut self, id: &[u8; 4], ) -> Result<&mut [u8], ProgramError>
Get the mutable data slice for a segment by ID.
Returns an error if the segment is locked, frozen, or has an
immutable role (Audit). Use [segment_data_mut_unchecked] to
bypass role enforcement (e.g., during initial account setup).
Sourcepub fn segment_data_mut_unchecked(
&mut self,
id: &[u8; 4],
) -> Result<&mut [u8], ProgramError>
pub fn segment_data_mut_unchecked( &mut self, id: &[u8; 4], ) -> Result<&mut [u8], ProgramError>
Get the mutable data slice for a segment without role enforcement.
Use during account initialization when writing to Audit segments before they become immutable. Still checks locked/frozen flags.
Sourcepub fn segment_overlay_mut<T>(
&mut self,
id: &[u8; 4],
) -> Result<&mut T, ProgramError>where
T: Pod + FixedLayout,
pub fn segment_overlay_mut<T>(
&mut self,
id: &[u8; 4],
) -> Result<&mut T, ProgramError>where
T: Pod + FixedLayout,
Get a mutable typed overlay for a segment.
Returns an error if the segment is locked or frozen.
Sourcepub fn freeze_segment(&mut self, id: &[u8; 4]) -> Result<(), ProgramError>
pub fn freeze_segment(&mut self, id: &[u8; 4]) -> Result<(), ProgramError>
Freeze a segment (set frozen flag).
Sourcepub fn unfreeze_segment(&mut self, id: &[u8; 4]) -> Result<(), ProgramError>
pub fn unfreeze_segment(&mut self, id: &[u8; 4]) -> Result<(), ProgramError>
Unfreeze a segment.
Sourcepub fn lock_segment(&mut self, id: &[u8; 4]) -> Result<(), ProgramError>
pub fn lock_segment(&mut self, id: &[u8; 4]) -> Result<(), ProgramError>
Lock a segment permanently (cannot be unlocked).