Struct EventPtrRaw

pub struct EventPtrRaw {
    pub rid: u32,
    pub token: Token,
    pub offset: usize,
    pub event: u32,
}
Expand description

Raw EventPtr table row with unresolved event index

Represents the binary format of an EventPtr metadata table entry (table ID 0x13) as stored in the metadata tables stream. EventPtr entries provide indirection for event table access, primarily used in edit-and-continue scenarios where event ordering has been modified.

The EventPtr table serves as a mapping layer between logical event positions and physical event locations in the Event table, enabling non-contiguous event arrangements while maintaining consistent logical references.

§Indirection Logic

EventPtr provides the following indirection pattern:

  • Logical Index: Position in EventPtr table (used by referencing metadata)
  • Physical Index: Value stored in EventPtr entry (actual Event table position)
  • Resolution: Logical → EventPtr[Logical]Event[Physical]

§Edit-and-Continue Context

EventPtr tables are typically present only when needed for edit-and-continue scenarios:

  • Original event ordering disrupted by code modifications
  • Logical event references must remain stable across edit sessions
  • Physical event locations may change but logical access remains consistent

§Reference

Fields§

§rid: u32

Row identifier within the EventPtr metadata table

The 1-based index of this EventPtr row. Used for metadata token generation and logical event indexing in indirection scenarios.

§token: Token

Metadata token for this EventPtr row

Combines the table identifier (0x13 for EventPtr) with the row ID to create a unique token. Format: 0x13000000 | rid

§offset: usize

Byte offset of this row within the metadata tables stream

Physical location of the raw EventPtr data within the metadata binary format. Used for debugging and low-level metadata analysis.

§event: u32

Event table index (unresolved)

1-based index into the Event table pointing to the actual event. This provides the physical location mapping for the logical event position represented by this EventPtr entry’s row ID.

Implementations§

§

impl EventPtrRaw

pub fn to_owned(&self) -> Result<EventPtrRc>

Convert to owned EventPtr with validated data

This method converts the raw EventPtr entry into a fully validated EventPtr structure with owned data. Since EventPtr entries contain only a single event reference, the conversion is straightforward and primarily serves to establish the owned data pattern consistent with other metadata tables.

§Returns

Returns EventPtrRc (Arc-wrapped EventPtr) on success, providing shared ownership of the validated EventPtr data.

§Errors

Currently doesn’t fail, but returns Result for consistency with other table conversion methods and future validation requirements.

pub fn apply(&self) -> Result<()>

Apply this EventPtr entry during metadata loading

Processes the raw EventPtr entry as part of the metadata loading framework. Unlike other metadata tables, EventPtr entries don’t directly modify other metadata structures since they serve purely as an indirection mechanism.

§Returns

Always returns Ok(()) since EventPtr entries don’t perform cross-table modifications during the initial loading phase.

Trait Implementations§

§

impl Clone for EventPtrRaw

§

fn clone(&self) -> EventPtrRaw

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for EventPtrRaw

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
§

impl<'a> RowDefinition<'a> for EventPtrRaw

§

fn row_size(sizes: &TableInfoRef) -> u32

Calculate the byte size of an EventPtr table row

Computes the total size in bytes required to store one EventPtr table row based on the table size information. The size depends on whether large table indexes are required for the Event table.

§Row Structure
  • event: 2 or 4 bytes (Event table index)
§Arguments
  • sizes - Table size information determining index byte sizes
§Returns

Returns the total byte size required for one EventPtr table row.

§

fn read_row( data: &'a [u8], offset: &mut usize, rid: u32, sizes: &TableInfoRef, ) -> Result<Self>

Read an EventPtr row from the metadata tables stream

Parses one EventPtr table row from the binary metadata stream, handling variable-size indexes based on table size information. Advances the offset to point to the next row after successful parsing.

§Arguments
  • data - The metadata tables stream binary data
  • offset - Current position in the stream (updated after reading)
  • rid - Row identifier for this EventPtr entry (1-based)
  • sizes - Table size information for determining index sizes
§Returns

Returns a parsed EventPtrRaw instance with all fields populated from the binary data.

§Errors
  • The data stream is truncated or corrupted
  • Event index values exceed expected ranges
  • Binary parsing encounters invalid data

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.