pub trait AsFilter<T: Filter> {
// Required methods
fn filter() -> T;
fn into_filter(self) -> T;
}
Expand description
Used to tie a type implementing Collection
to its companion Filter
type.
§Examples
Tying User
to its Filter
.
use std::convert::TryFrom;
use mongod::bson::Document;
use mongod::{AsFilter, Filter, Comparator, Error};
use mongod::ext::bson::Bson;
#[derive(Bson, Mongo)]
#[mongo(collection="users")]
pub struct User {
pub name: String,
}
#[derive(Default)]
pub struct UserFilter {
pub name: Option<Comparator<String>>,
}
impl Filter for UserFilter {
fn new() -> Self {
Self::default()
}
fn into_document(self) -> Result<Document, Error> {
let mut doc = Document::new();
if let Some(value) = self.name {
doc.insert("name", Bson::try_from(value)?.0);
}
Ok(doc)
}
}
impl AsFilter<UserFilter> for User {
fn filter() -> UserFilter {
UserFilter::default()
}
fn into_filter(self) -> UserFilter {
UserFilter {
name: Some(Comparator::Eq(self.name)),
}
}
}
Required Methods§
sourcefn into_filter(self) -> T
fn into_filter(self) -> T
Converts the Collection
instance into its filter.
Object Safety§
This trait is not object safe.