pub enum ComprehensionMode {
Cartesian(Vec<Clause>),
Union(Vec<Subspace>),
}Expand description
How the clauses of a comprehension combine.
See the module-level doc for the detection rule and the motivating examples.
Variants§
Cartesian(Vec<Clause>)
One ordered list of clauses; iteration emits the
cross product. Cartesian(vec![one_clause]) is the
degenerate single-variable form (for_each var in expr).
Union(Vec<Subspace>)
A list of sub-spaces. Each Subspace is one Cartesian
list of clauses; iteration emits each sub-space’s product,
concatenated in declaration order. Variable names typically
repeat across sub-spaces so children see the same binding
shape regardless of which sub-space the current tuple came
from.
Trait Implementations§
Source§impl Clone for ComprehensionMode
impl Clone for ComprehensionMode
Source§fn clone(&self) -> ComprehensionMode
fn clone(&self) -> ComprehensionMode
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ComprehensionMode
impl Debug for ComprehensionMode
Source§impl<'de> Deserialize<'de> for ComprehensionMode
impl<'de> Deserialize<'de> for ComprehensionMode
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ComprehensionMode, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ComprehensionMode, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Eq for ComprehensionMode
Source§impl PartialEq for ComprehensionMode
impl PartialEq for ComprehensionMode
Source§impl Serialize for ComprehensionMode
impl Serialize for ComprehensionMode
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl StructuralPartialEq for ComprehensionMode
Auto Trait Implementations§
impl Freeze for ComprehensionMode
impl RefUnwindSafe for ComprehensionMode
impl Send for ComprehensionMode
impl Sync for ComprehensionMode
impl Unpin for ComprehensionMode
impl UnsafeUnpin for ComprehensionMode
impl UnwindSafe for ComprehensionMode
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
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> ⓘ
Converts
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> ⓘ
Converts
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