1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
/// Used to mark an `enum` as a viable type for use in sorting. /// /// # Example /// /// Defining an `enum` as a set of fields for use in a mongo query. /// /// ``` /// # use mongod_derive::{Bson, Mongo}; /// use mongod::Field; /// /// #[derive(Bson, Mongo)] /// #[mongo(collection="users")] /// pub struct User { /// pub name: String, /// } /// /// pub enum UserField { /// Name, /// } /// /// impl Field for UserField {} /// /// impl From<UserField> for String { /// fn from(field: UserField) -> String { /// match field { /// UserField::Name => "name".to_owned(), /// } /// } /// } /// ``` pub trait Field {} /// Used to tie a type implementing [`Collection`](./trait.Collection.html) to its companion `Field` type. /// /// # Example /// /// Defining an `enum` as a set of fields for use in a mongo query. /// /// ``` /// # use mongod_derive::{Bson, Mongo}; /// use mongod::{AsField, Field}; /// /// #[derive(Bson, Mongo)] /// #[mongo(collection="users")] /// pub struct User { /// pub name: String, /// } /// /// impl AsField<UserField> for User{} /// /// pub enum UserField { /// Name, /// } /// /// impl Field for UserField {} /// /// impl From<UserField> for String { /// fn from(field: UserField) -> String { /// match field { /// UserField::Name => "name".to_owned(), /// } /// } /// } /// ``` pub trait AsField<F: Field + Into<String>> {}