Skip to main content

EntityArray

Struct EntityArray 

Source
pub struct EntityArray {
    pub ids: Vec<u64>,
    pub xs: Vec<f32>,
    pub ys: Vec<f32>,
    pub widths: Vec<f32>,
    pub heights: Vec<f32>,
    pub z_indices: Vec<u16>,
    pub styles: Vec<Style>,
    pub state_tags: Vec<u8>,
    pub content_hashes: Vec<u64>,
    pub content_offsets: Vec<u32>,
    pub contents: Vec<u8>,
}
Expand description

Structure-of-arrays layout — cache-contiguous, SIMD-friendly.

Each entity carries a state_tag for delta compression: STATIC(0) — unchanged since client’s last ack MOVED(1) — position/viewport only CHANGED(2) — content or style changed REMOVED(3) — no longer present

content_hashes[i] = XXH3-64 of the content blob for dedup. Clients cache blobs by hash and only fetch new ones on CHANGED entities.

Fields§

§ids: Vec<u64>§xs: Vec<f32>§ys: Vec<f32>§widths: Vec<f32>§heights: Vec<f32>§z_indices: Vec<u16>§styles: Vec<Style>§state_tags: Vec<u8>§content_hashes: Vec<u64>§content_offsets: Vec<u32>§contents: Vec<u8>

Implementations§

Source§

impl EntityArray

Source

pub fn len(&self) -> usize

Source

pub fn is_empty(&self) -> bool

Source

pub fn clear(&mut self)

Source

pub fn shrink_to_fit(&mut self)

Source

pub fn push( &mut self, id: u64, x: f32, y: f32, w: f32, h: f32, z: u16, style: Style, content: &[u8], )

Source

pub fn diff_since(&self, prev: &EntityArray) -> ChangedEntities

Produce delta between self and an older frame. Returns only entities that differ: STATIC entries are omitted entirely.

Source

pub fn content_slice(&self, idx: usize) -> &[u8]

Source

pub fn unpack_entity( &self, idx: usize, ) -> (&[u8], &[u8], &[u8], &[u8], &[u8], &[u8])

Unpack a single entity’s content from packed format. Returns (tag, classes, id, href, role, text) — all slices borrowing from self.contents. Packed format: \0tag\0[classes]\0[id]\0[href]\0[role]\0text

Source§

impl EntityArray

Source

pub fn with_capacity(n: usize) -> Self

Source

pub fn hydration_json(&self) -> String

Build a JSON string for the ECS-to-JS hydration bridge. Output flat array with parentId for reconstructing the DOM tree in QuickJS.

Trait Implementations§

Source§

impl Clone for EntityArray

Source§

fn clone(&self) -> EntityArray

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for EntityArray

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for EntityArray

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for EntityArray

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for EntityArray

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> 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.