rocket_db_pools::diesel::prelude

Trait BoolExpressionMethods

Source
pub trait BoolExpressionMethods: Sized + Expression {
    // Provided methods
    fn and<T, ST>(
        self,
        other: T,
    ) -> Grouped<And<Self, <T as AsExpression<ST>>::Expression>>
       where Self::SqlType: SqlType,
             ST: SqlType + TypedExpressionType + BoolOrNullableBool,
             T: AsExpression<ST>,
             And<Self, <T as AsExpression<ST>>::Expression>: Expression { ... }
    fn or<T, ST>(
        self,
        other: T,
    ) -> Grouped<Or<Self, <T as AsExpression<ST>>::Expression>>
       where Self::SqlType: SqlType,
             ST: SqlType + TypedExpressionType + BoolOrNullableBool,
             T: AsExpression<ST>,
             Or<Self, <T as AsExpression<ST>>::Expression>: Expression { ... }
}
Expand description

Methods present on boolean expressions

Provided Methods§

Source

fn and<T, ST>( self, other: T, ) -> Grouped<And<Self, <T as AsExpression<ST>>::Expression>>

Creates a SQL AND expression

§Example
diesel::insert_into(animals)
    .values(&vec![
        (species.eq("ferret"), legs.eq(4), name.eq("Freddy")),
        (species.eq("ferret"), legs.eq(4), name.eq("Jack")),
    ])
    .execute(connection)?;

let data = animals.select((species, name))
    .filter(species.eq("ferret").and(name.eq("Jack")))
    .load(connection)?;
let expected = vec![
    (String::from("ferret"), Some(String::from("Jack"))),
];
assert_eq!(expected, data);
Source

fn or<T, ST>( self, other: T, ) -> Grouped<Or<Self, <T as AsExpression<ST>>::Expression>>

Creates a SQL OR expression

The result will be wrapped in parenthesis, so that precedence matches that of your function calls. For example, false.and(false.or(true)) will generate the SQL FALSE AND (FALSE OR TRUE), which returns false

§Example
diesel::insert_into(animals)
    .values(&vec![
        (species.eq("ferret"), legs.eq(4), name.eq("Freddy")),
        (species.eq("ferret"), legs.eq(4), name.eq("Jack")),
    ])
    .execute(connection)?;

let data = animals.select((species, name))
    .filter(species.eq("ferret").or(name.eq("Jack")))
    .load(connection)?;
let expected = vec![
    (String::from("dog"), Some(String::from("Jack"))),
    (String::from("ferret"), Some(String::from("Freddy"))),
    (String::from("ferret"), Some(String::from("Jack"))),
];
assert_eq!(expected, data);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§