pub struct Columns { /* private fields */ }Expand description
Dense typed columns keyed by field name (only fully-typed, NaN-free fields).
Implementations§
Source§impl Columns
impl Columns
Sourcepub fn build(items: &[Value]) -> Self
pub fn build(items: &[Value]) -> Self
Build typed columns from items. A field qualifies only if it is the
same scalar variant (Int/Float/Str) in every row — floats must also
be non-NaN. The first row seeds the candidate type per field.
Sourcepub fn filter(
&self,
field: &str,
op: FilterOp,
value: &Value,
) -> Option<Vec<usize>>
pub fn filter( &self, field: &str, op: FilterOp, value: &Value, ) -> Option<Vec<usize>>
Fast filter for a single comparison/equality op on a typed column, or
None when this path does not apply (unknown field, unsupported
operator, or a value whose coercion can’t be proven equal to the row
engine). Returns matching indices in ascending order — identical to
crate::filter::filter_indices.
Sourcepub fn sort_subset(
&self,
order: &[usize],
keys: &[(&str, SortDirection)],
limit: Option<usize>,
) -> Option<Vec<usize>>
pub fn sort_subset( &self, order: &[usize], keys: &[(&str, SortDirection)], limit: Option<usize>, ) -> Option<Vec<usize>>
Sort an existing index list by one or more typed-column keys, preserving
relative order for equal keys (stable). Returns None unless every
key is a typed column. Keys are applied highest-priority first (matching
crate::sort::sort_indices); typed columns have no nulls, so null
placement is irrelevant.
limit keeps only the first k rows (a top-k partial sort) — the page
window — instead of fully ordering the whole subset; None sorts all.