Refusal

Enum Refusal 

Source
pub enum Refusal {
    NoLookup,
    CollectionReadsTheElement,
    KeyReadsMoreThanTheElement,
    PredicateIsNotAnEquality,
    ProjectionReadsMoreThanTheRow,
    NothingSaved,
    NoMembership,
    MembershipAndMore,
}
Expand description

Why a body that contained a map_get was not recognised as a join.

§99.6’s rule for the case inference cannot see: “compile it the slow way and say so”. These reach crate::plan::Node::because, so beck explain cost prints the reason beside the operator that pays for it rather than leaving a reader to guess which of the conditions failed.

Variants§

§

NoLookup

Nothing in the body that could relate: no map_get and no filter_list.

§

CollectionReadsTheElement

The collection looked up in is derived per element, so there is nothing to index once.

§

KeyReadsMoreThanTheElement

The key reads something other than the element, so it is not an equi-join on the left row.

§

PredicateIsNotAnEquality

The filter’s predicate is not an equality with one side over each element, so there is no key to arrange the collection by.

§

ProjectionReadsMoreThanTheRow

The aggregate’s projection reads something other than the row it is applied to, so what each row contributes to its group is not a function of that row.

§

NothingSaved

Recognising it would not remove the capture that costs the rebuild, so it buys nothing.

§

NoMembership

Nothing in the predicate asks another collection whether it holds a key, so there is no difference and no intersection here.

§

MembershipAndMore

The predicate asks a collection whether it holds a key and something else besides, so the filter is not the membership test — it contains one.

Implementations§

Source§

impl Refusal

Source

pub fn because(&self) -> String

The sentence beck explain prints, in the voice the rest of the plan’s reasons use.

Trait Implementations§

Source§

impl Clone for Refusal

Source§

fn clone(&self) -> Refusal

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Refusal

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Refusal

Source§

fn eq(&self, other: &Refusal) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Refusal

Source§

impl StructuralPartialEq for Refusal

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.