我希望能够保留用于过滤表的谓词在一个地方的某个地方,并给它们起好的名字.例如:而不是写一些
let post = posts
.filter(published.eq(true).and(id.eq(5))
...
我希望有一个这样的函数:
fn published_with_id(n: i64) -> (WHAT HERE?) {
published.eq(true).and(id.eq(n))
}
...
let post = posts.filter(published_with_id(5))
然而,当我try 编译代码时,我得到了一个建议,即将谓词函数的返回类型声明为长的类型,并且确实有相当长的类型:diesel::expression::grouped::Grouped<diesel::expression::operators::And<diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<columns::published, diesel::expression::bound::Bound<diesel::sql_types::Bool, bool>>>, diesel::expression::grouped::Grouped<diesel::expression::operators::Eq<columns::id, i64>>>>
有没有一种方法可以用一个合理的返回类型来注释它?或者有没有更好的方法把所有谓词都放在一个地方?