Derive Macro IndexConfig

Source
#[derive(IndexConfig)]
{
    // Attributes available to this derive:
    #[index_config]
}
Expand description

Derive the IndexConfig trait.

§Field attribute

Use the #[index_config(..)] field attribute to generate the correct settings for each field. The available parameters are:

  • primary_key (can only be used once)
  • distinct (can only be used once)
  • searchable
  • displayed
  • filterable
  • sortable

§Index name

The name of the index will be the name of the struct converted to snake case.

§Sample usage:

use serde::{Serialize, Deserialize};
use meilisearch_sdk::documents::IndexConfig;
use meilisearch_sdk::settings::Settings;
use meilisearch_sdk::indexes::Index;
use meilisearch_sdk::client::Client;

#[derive(Serialize, Deserialize, IndexConfig)]
struct Movie {
    #[index_config(primary_key)]
    movie_id: u64,
    #[index_config(displayed, searchable)]
    title: String,
    #[index_config(displayed)]
    description: String,
    #[index_config(filterable, sortable, displayed)]
    release_date: String,
    #[index_config(filterable, displayed)]
    genres: Vec<String>,
}

async fn usage(client: Client) {
    // Default settings with the distinct, searchable, displayed, filterable, and sortable fields set correctly.
    let settings: Settings = Movie::generate_settings();
    // Index created with the name `movie` and the primary key set to `movie_id`
    let index: Index = Movie::generate_index(&client).await.unwrap();
}