pub enum ValidationError {
V1DuplicateName {
combinator: &'static str,
name: String,
},
V2ShapeMismatch {
expected: Vec<String>,
actual: Vec<String>,
},
V3UnresolvedNames {
predicate: String,
coords: Vec<String>,
unresolved: Vec<String>,
},
V4InputShape {
strategy: StrategyName,
reason: String,
},
V6UnboundedDiscrete {
operator: &'static str,
cardinality: CardinalityClass,
},
V7ZipCardinality {
mode: ZipMode,
reason: String,
},
V8ContinuousRequirement {
reason: String,
},
V9UnionClassMismatch {
reason: String,
},
}Expand description
V-axiom violation. Each variant carries enough context to produce a useful diagnostic at the call site.
Variants§
V1DuplicateName
V1 — cartesian or zip children share a name.
Fields
V2ShapeMismatch
V2 — union children disagree on tuple shape.
Fields
V3UnresolvedNames
V3 — filter predicate references a name neither in the child’s coordinates nor in the parent scope. Parser-time validation only — link-time (parent scope) check lives in the consumer.
coords is the wrapped comprehension’s coordinate set;
the predicate may also reference names from the parent
scope which this layer doesn’t see.
Fields
V4InputShape
V4 — strategy applied to an input whose shape it cannot accept. The Phase 2 stub form rejects:
- non-
Lexstrategy whose input is a rawFilternode (filter destroys index addressability; V5’s one-layer look-through is enforced by checking that the filter’s child is addressable); - lattice-geometric strategy whose input is a
Unionor a 1-axisClause(per §3.6 strategy table).
Phase 3 will replace this with the full IndexFn check.
Fields
strategy: StrategyNameThe strategy applied.
V6UnboundedDiscrete
V6 — non-Lex order or Strict/Truncate zip applied to an
Unbounded discrete input.
Fields
cardinality: CardinalityClassThe unbounded input’s cardinality class.
V7ZipCardinality
V7 — zip cardinality contract violated. Three sub-cases: Strict-mode mismatch, mixed-class children, or any continuous child.
V8ContinuousRequirement
V8 — continuous source requires explicit sampling OR source declares a non-integrable measure.
V9UnionClassMismatch
V9 — union children include a continuous or mixed-class child.
Trait Implementations§
Source§impl Clone for ValidationError
impl Clone for ValidationError
Source§fn clone(&self) -> ValidationError
fn clone(&self) -> ValidationError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ValidationError
impl Debug for ValidationError
Source§impl PartialEq for ValidationError
impl PartialEq for ValidationError
impl StructuralPartialEq for ValidationError
Auto Trait Implementations§
impl Freeze for ValidationError
impl RefUnwindSafe for ValidationError
impl Send for ValidationError
impl Sync for ValidationError
impl Unpin for ValidationError
impl UnsafeUnpin for ValidationError
impl UnwindSafe for ValidationError
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
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<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more