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 66
macro_rules! get( ($e:expr) => (match $e { Some(e) => e, None => return None }) ); /// `doc!` is a shortcut that helps building `Document` /// objects. /// /// Assuming that `field1` and `field2` are `Field` instances. /// You can create a document with a value of `value1` for `field1` /// `value2` for `field2`, as follows : /// /// ```c /// doc!( /// field1 => value1, /// field2 => value2, /// ) /// ``` /// /// The value can be a `u64`, a `&str`, a `i64`, or a `String`. /// /// # Warning /// /// The document hence created, is not yet validated against a schema. /// Nothing prevents its user from creating an invalid document missing a /// field, or associating a `String` to a `u64` field for instance. /// /// # Example /// /// ``` /// #[macro_use] /// extern crate tantivy; /// /// use tantivy::schema::{SchemaBuilder, TEXT, FAST}; /// /// //... /// /// # fn main() { /// let mut schema_builder = SchemaBuilder::new(); /// let title = schema_builder.add_text_field("title", TEXT); /// let author = schema_builder.add_text_field("text", TEXT); /// let likes = schema_builder.add_u64_field("num_u64", FAST); /// let schema = schema_builder.build(); /// let doc = doc!( /// title => "Life Aquatic", /// author => "Wes Anderson", /// likes => 4u64 /// ); /// # } /// ``` #[macro_export] macro_rules! doc( () => { { ($crate::Document::default()) } }; // avoids a warning due to the useless `mut`. ($($field:ident => $value:expr),*) => { { let mut document = $crate::Document::default(); $( document.add($crate::schema::FieldValue::new($field, $value.into())); )* document } }; );