Enum Query

Source
pub enum Query {
    Exact(String, String),
    Prefix(String, String),
    InRange(String, String, String),
    OutRange(String, String, String),
    Minimum(String, String),
    Maximum(String, String),
    Or(Vec<Query>),
    And(Vec<Query>),
    Exclude(Box<Query>, Vec<Query>),
}
Expand description

Query is a recursive datatype that describes a query to a search index or engine.

The query only takes strings as parameters. It is up to the search index to parse this string into the expected type.

§Example

use attribute_search_engine::Query;

let q = Query::Exclude(
    Box::new(Query::And(vec![
        Query::Or(vec![
            Query::InRange("a".into(), "32".into(), "128".into()),
            Query::Prefix("b".into(), "hello".into()),
        ]),
        Query::Minimum("c".into(), "42".into()),
    ])),
    vec![
        Query::Exact("b".into(), "hello world".into()),
    ],
);

Variants§

§

Exact(String, String)

Only matches if the attribute has exactly the value as the query.

§

Prefix(String, String)

Matches if the attribute starts with the value of the query.

§

InRange(String, String, String)

Matches if the attribute is in the range of the two query values. First is minimum, seconds is maximum, both inclusive.

§

OutRange(String, String, String)

Matches if the attribute is NOT in the range of the two query values. First is the start of the range, seconds is the end. A value that is equal to the start or the end is considered in range and will not be returned.

§

Minimum(String, String)

Matches if the attribute is at least as high/big as the query value.

§

Maximum(String, String)

Matches if the attribute is at most as high/big as the query value.

§

Or(Vec<Query>)

Matches if at least one of the subqueries matches.

§

And(Vec<Query>)

Only matches if all subqueries match.

§

Exclude(Box<Query>, Vec<Query>)

Removed all matches from the first query that appear in at least on of the matches of the query vector.

Trait Implementations§

Source§

impl Debug for Query

Source§

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

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

impl PartialEq for Query

Source§

fn eq(&self, other: &Query) -> 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 StructuralPartialEq for Query

Auto Trait Implementations§

§

impl Freeze for Query

§

impl RefUnwindSafe for Query

§

impl Send for Query

§

impl Sync for Query

§

impl Unpin for Query

§

impl UnwindSafe for Query

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> 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, 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.