pub enum IndexArm {
OneTableFourColumns,
FourTables,
PackedPayload,
}Expand description
Which payload layout sits behind the read stack’s stree.
This one is a type, not a value, and that is deliberate: it is the hot
path. GitStore is generic over it
(GitStore<S = OneTableFourColumns>), so a caller that knows its arm at
compile time — which includes every existing caller, through the default —
pays no dispatch at all. This enum exists so a runtime selector can pick
one; see crate::git_ops::open_from_env, which monomorphises all three and
hands back a Box<dyn GitOps>.
MEASURED 2026-08-07 (PLAN §13): a packed 25-byte column beats four columns by
19–76% on the payload gather but loses column scans by 3.3x–14.4x, and no git
operation does a full-row fetch. That is why OneTableFourColumns is the
default — and why the losing arms stay selectable, because that conclusion is
a measurement and measurements get re-run.
Variants§
OneTableFourColumns
OneTableFourColumns — the
default. One Arrow IPC section, four columns.
FourTables
FourTables — four independent IPC
sections joined on the ordinal.
PackedPayload
PackedPayload — one 25-byte
fixed-size-binary column holding the whole row.
Implementations§
Source§impl IndexArm
impl IndexArm
pub const ALL: [IndexArm; 3]
Sourcepub fn projection_name(self) -> &'static str
pub fn projection_name(self) -> &'static str
The name ObjectIndex::name
reports for the projection this arm builds. Distinct from
as_str on purpose: one is what an operator types,
the other is what the built object calls itself, and a guard that
compares them is comparing the selector against applied output.
pub fn parse(s: &str) -> Result<Self>
Trait Implementations§
impl Copy for IndexArm
impl Eq for IndexArm
impl StructuralPartialEq for IndexArm
Auto Trait Implementations§
impl Freeze for IndexArm
impl RefUnwindSafe for IndexArm
impl Send for IndexArm
impl Sync for IndexArm
impl Unpin for IndexArm
impl UnsafeUnpin for IndexArm
impl UnwindSafe for IndexArm
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.