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§
sourcefn 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 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);sourcefn 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,
 
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);