pub enum RuleId {
R0a,
R0b,
R1,
R2,
R3,
R4,
R5,
R6,
R7,
R8,
R9,
R10,
}Expand description
Identifier for each R-rule in the optimizer catalog (§10.2 + §10.10.3).
Variants§
R0a
Identity elimination: a singleton combinator or a trivial filter is dropped.
R0b
Associativity flattening: nested unions or cartesians of one kind become one n-ary node.
R1
order(Lex) is a counter wrapper: it becomes a truncated lexicographic walk.
R2
Push-down of a truncated order to an index-addressable child’s closed form.
R3
An untruncated lexicographic order commutes with a filter.
R4
A filter distributes over a union.
R5
A per-axis filter pushes down into a cartesian’s axes.
R6
A chain of filters folds into one.
R7
A chain of orders folds into one when the inner is untruncated.
R8
Range narrowing from a bounded predicate (deferred).
R9
Discrete-set substitution from an in predicate (deferred).
R10
Monotonic-cutoff truncation (deferred).
Trait Implementations§
impl Copy for RuleId
Source§impl<'de> Deserialize<'de> for RuleId
impl<'de> Deserialize<'de> for RuleId
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for RuleId
impl StructuralPartialEq for RuleId
Auto Trait Implementations§
impl Freeze for RuleId
impl RefUnwindSafe for RuleId
impl Send for RuleId
impl Sync for RuleId
impl Unpin for RuleId
impl UnsafeUnpin for RuleId
impl UnwindSafe for RuleId
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,
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
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> ⓘ
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