Function merged_wire_layout

Source
fn merged_wire_layout(product: &Product) -> SmallVec<[(u8, bool); 8]>
Expand description

Merge product.fields and product.reserved into a single tag-ascending list of (tag, is_active) pairs.

The Array-strategy encoder emits wire positions in tag-ascending order across both active and reserved tags (a V1 writer that still carries a value at a now-retired tag sorts that tag in alongside the live ones). So decoding by wire position requires the same merged ordering: position i on the wire corresponds to the i-th tag in the merged list, and the is_active flag tells the decoder whether to push the value bytes into the buffered entries (active) or drain them silently (reserved).

Inline capacity 8 fits the typical ACIR product without spilling; larger products transparently fall back to the heap.