Trait diesel::expression_methods::BoolExpressionMethods[][src]

pub trait BoolExpressionMethods: Expression + Sized {
    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

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);

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);

Implementors