pub trait BoolExpressionMethods: Expression<SqlType = Bool> + Sized {
// Provided methods
fn and<T: AsExpression<Bool>>(self, other: T) -> And<Self, T::Expression> { ... }
fn or<T: AsExpression<Bool>>(
self,
other: T,
) -> Grouped<Or<Self, T::Expression>> { ... }
}
Expand description
Methods present on boolean expressions
Provided Methods§
Sourcefn and<T: AsExpression<Bool>>(self, other: T) -> And<Self, T::Expression>
fn and<T: AsExpression<Bool>>(self, other: T) -> And<Self, T::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: AsExpression<Bool>>(self, other: T) -> Grouped<Or<Self, T::Expression>>
fn or<T: AsExpression<Bool>>(self, other: T) -> Grouped<Or<Self, T::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.