Struct LogicPath

Source
pub struct LogicPath { /* private fields */ }
Expand description

Encodes information on how the syntax tree below a given query is structured.

This way it is possible to optimize queries on the condition of a specific tree structure.

An example would be turning a subquery into a JOIN or IN given a plain AND or OR structure.

This struct itself is not mutable, it can only generate copies of itself with the given operation appended through the and, or and not methods.

Implementations§

Source§

impl LogicPath

Source

pub fn new_root() -> Self

Creates a new root for a logic path

Source

pub fn depth(&self) -> usize

Returns the depth/length of the path, starts at 0.

Source

pub fn is_root(&self) -> bool

Returns wheter this struct represents the root node of a logic path

Source

pub fn is_plain_and(&self) -> bool

Wheter the logic path is made up of only AND connections without any inversions.

Source

pub fn is_plain_or(&self) -> bool

Wheter the logic_path is made up of only OR connections without any inversions.

Source

pub fn is_excluding(&self) -> bool

Returns the parity of all inversions so far and returns true for an uneven amount of inversions.

This can be used to determine wheter a match of the query could include or exclude an item.

Source

pub fn is_branch_inverted(&self) -> bool

Returns wheter there has been an uneven amount of inversions since the last AND or OR statement.

Source

pub fn and(&self) -> Self

Return the path with an AND connection appended.

Source

pub fn or(&self) -> Self

Return the path with an OR connection appended.

Source

pub fn not(&self) -> Self

Return the path with an inversion appended.

Trait Implementations§

Source§

impl Clone for LogicPath

Source§

fn clone(&self) -> LogicPath

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 LogicPath

Source§

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

Formats the value using the given formatter. Read more

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.