diesel::prelude

Trait BoolExpressionMethods

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

Methods present on boolean expressions

Provided Methods§

source

fn and<T, ST>(self, other: T) -> And<Self, T, ST>
where Self::SqlType: SqlType, ST: SqlType + TypedExpressionType, T: AsExpression<ST>, And<Self, T::Expression>: 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) -> Or<Self, T, ST>
where Self::SqlType: SqlType, ST: SqlType + TypedExpressionType, T: AsExpression<ST>, Or<Self, T::Expression>: 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);

Object Safety§

This trait is not object safe.

Implementors§