pallet 0.7.0

Document store built with sled and tantivy
Documentation
pub trait FieldValue: Clone {
    type FieldOptionsType;
    fn default_field_options() -> Self::FieldOptionsType;
    fn field_entry<I: Into<String>, T: Into<Self::FieldOptionsType>>(
        name: I,
        field_options: Option<T>,
    ) -> tantivy::schema::FieldEntry;
    fn into_value(self) -> Option<tantivy::schema::Value>;
}

impl FieldValue for String {
    type FieldOptionsType = tantivy::schema::TextOptions;

    fn default_field_options() -> Self::FieldOptionsType {
        tantivy::schema::TEXT
    }

    fn field_entry<I: Into<String>, T: Into<Self::FieldOptionsType>>(
        name: I,
        field_options: Option<T>,
    ) -> tantivy::schema::FieldEntry {
        tantivy::schema::FieldEntry::new_text(
            name.into(),
            field_options.map(Into::into).unwrap_or_else(Self::default_field_options),
        )
    }

    fn into_value(self) -> Option<tantivy::schema::Value> {
        Some(self.into())
    }
}

impl FieldValue for u64 {
    type FieldOptionsType = tantivy::schema::IntOptions;

    fn default_field_options() -> Self::FieldOptionsType {
        tantivy::schema::INDEXED.into()
    }

    fn field_entry<I: Into<String>, T: Into<Self::FieldOptionsType>>(
        name: I,
        field_options: Option<T>,
    ) -> tantivy::schema::FieldEntry {
        tantivy::schema::FieldEntry::new_u64(
            name.into(),
            field_options.map(Into::into).unwrap_or_else(Self::default_field_options),
        )
    }

    fn into_value(self) -> Option<tantivy::schema::Value> {
        Some(self.into())
    }
}

impl FieldValue for i64 {
    type FieldOptionsType = tantivy::schema::IntOptions;

    fn default_field_options() -> Self::FieldOptionsType {
        tantivy::schema::INDEXED.into()
    }

    fn field_entry<I: Into<String>, T: Into<Self::FieldOptionsType>>(
        name: I,
        field_options: Option<T>,
    ) -> tantivy::schema::FieldEntry {
        tantivy::schema::FieldEntry::new_i64(
            name.into(),
            field_options.map(Into::into).unwrap_or_else(Self::default_field_options),
        )
    }

    fn into_value(self) -> Option<tantivy::schema::Value> {
        Some(self.into())
    }
}

impl FieldValue for f64 {
    type FieldOptionsType = tantivy::schema::IntOptions;

    fn default_field_options() -> Self::FieldOptionsType {
        tantivy::schema::INDEXED.into()
    }

    fn field_entry<I: Into<String>, T: Into<Self::FieldOptionsType>>(
        name: I,
        field_options: Option<T>,
    ) -> tantivy::schema::FieldEntry {
        tantivy::schema::FieldEntry::new_f64(
            name.into(),
            field_options.map(Into::into).unwrap_or_else(Self::default_field_options),
        )
    }

    fn into_value(self) -> Option<tantivy::schema::Value> {
        Some(self.into())
    }
}

impl FieldValue for tantivy::DateTime {
    type FieldOptionsType = tantivy::schema::IntOptions;

    fn default_field_options() -> Self::FieldOptionsType {
        tantivy::schema::INDEXED.into()
    }

    fn field_entry<I: Into<String>, T: Into<Self::FieldOptionsType>>(
        name: I,
        field_options: Option<T>,
    ) -> tantivy::schema::FieldEntry {
        tantivy::schema::FieldEntry::new_date(
            name.into(),
            field_options.map(Into::into).unwrap_or_else(Self::default_field_options),
        )
    }

    fn into_value(self) -> Option<tantivy::schema::Value> {
        Some(self.into())
    }
}

impl<F: FieldValue> FieldValue for Option<F> {
    type FieldOptionsType = F::FieldOptionsType;
    fn default_field_options() -> Self::FieldOptionsType {
        F::default_field_options()
    }
    fn field_entry<I: Into<String>, T: Into<Self::FieldOptionsType>>(
        name: I,
        field_options: Option<T>,
    ) -> tantivy::schema::FieldEntry {
        F::field_entry(name, field_options)
    }

    fn into_value(self) -> Option<tantivy::schema::Value> {
        self.and_then(FieldValue::into_value)
    }
}