#[non_exhaustive]pub struct AxisPlan {
pub axis: Axis,
pub within: Vec<AxisPlan>,
}Expand description
One node in the user’s grouping plan: an axis to cluster on, plus a (possibly empty) list of sub-plans describing how to further cluster the records that fall into each top-level cluster.
--by FIELD,FIELD,... builds a degenerate chain (each axis is the
only child of its parent). --within adds explicit children. The
runtime walks within recursively per cluster.
AxisPlan is #[non_exhaustive] — construct values via
AxisPlan::leaf, AxisPlan::with, or AxisPlan::with_many.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.axis: AxisAxis to cluster on at this level.
within: Vec<AxisPlan>Sub-plans applied to each cluster’s record subset. Empty for leaf levels.
Implementations§
Source§impl AxisPlan
impl AxisPlan
Sourcepub fn leaf(axis: Axis) -> Self
pub fn leaf(axis: Axis) -> Self
A leaf plan with no sub-axes.
§Examples
use face_core::{Axis, AxisPlan};
// `Axis` is `#[non_exhaustive]`; build it by deserializing the
// wire form (the same shape `result.axes[]` carries in §7).
let axis: Axis = serde_json::from_value(serde_json::json!({
"field": "kind",
"strategy": "exact",
"auto": false,
})).unwrap();
let plan = AxisPlan::leaf(axis);
assert!(plan.within.is_empty());Trait Implementations§
Auto Trait Implementations§
impl Freeze for AxisPlan
impl RefUnwindSafe for AxisPlan
impl Send for AxisPlan
impl Sync for AxisPlan
impl Unpin for AxisPlan
impl UnsafeUnpin for AxisPlan
impl UnwindSafe for AxisPlan
Blanket Implementations§
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
Mutably borrows from an owned value. Read more