Struct Select

Source
pub struct Select<T, E>
where T: Tuple, E: Expression<T>,
{ /* private fields */ }
Expand description

Selects tuples of the underlying sub-expression according to a given predicate.

Example:

use codd::{Database, expression::Select};

let mut db = Database::new();
let fruit = db.add_relation::<String>("Fruit").unwrap();

db.insert(&fruit, vec!["Apple".to_string(), "BANANA".to_string(), "cherry".to_string()].into());

let select = Select::new(
    &fruit,
    |t| t.contains('A'), // select predicate
);

assert_eq!(vec!["Apple", "BANANA"], db.evaluate(&select).unwrap().into_tuples());

Implementations§

Source§

impl<T, E> Select<T, E>
where T: Tuple, E: Expression<T>,

Source

pub fn new<I, P>(expression: I, predicate: P) -> Self
where I: IntoExpression<T, E>, P: FnMut(&T) -> bool + 'static,

Creates a new Select expression over expression according to the predicate closure.

Source

pub fn expression(&self) -> &E

Returns a reference to the underlying sub-expression.

Trait Implementations§

Source§

impl<T, E> Clone for Select<T, E>
where T: Tuple + Clone, E: Expression<T> + Clone,

Source§

fn clone(&self) -> Select<T, E>

Returns a copy 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<T, E> Debug for Select<T, E>
where T: Tuple, E: Expression<T>,

Source§

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

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

impl<T, E> Expression<T> for Select<T, E>
where T: Tuple, E: Expression<T>,

Source§

fn visit<V>(&self, visitor: &mut V)
where V: Visitor,

Visits this expression by a Visitor.
Source§

fn builder(&self) -> Builder<T, Self>

Returns an expression builder over this expression.
Source§

impl<T: Tuple> From<Select<T, Mono<T>>> for Mono<T>

Source§

fn from(select: Select<T, Mono<T>>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<T, E> Freeze for Select<T, E>
where E: Freeze,

§

impl<T, E> !RefUnwindSafe for Select<T, E>

§

impl<T, E> !Send for Select<T, E>

§

impl<T, E> !Sync for Select<T, E>

§

impl<T, E> Unpin for Select<T, E>
where E: Unpin,

§

impl<T, E> !UnwindSafe for Select<T, E>

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, E> IntoExpression<T, E> for E
where T: Tuple, E: Expression<T>,

Source§

fn into_expression(self) -> E

Consumes the receiver and returns an expression.
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.