qdrant_client/builders/
multi_vector_config_builder.rs

1use crate::qdrant::*;
2
3#[derive(Clone)]
4pub struct MultiVectorConfigBuilder {
5    /// Comparator for multi-vector search
6    pub(crate) comparator: Option<i32>,
7}
8
9impl MultiVectorConfigBuilder {
10    /// Comparator for multi-vector search
11    pub fn comparator<VALUE: core::convert::Into<i32>>(self, value: VALUE) -> Self {
12        let mut new = self;
13        new.comparator = Option::Some(value.into());
14        new
15    }
16
17    fn build_inner(self) -> Result<MultiVectorConfig, MultiVectorConfigBuilderError> {
18        Ok(MultiVectorConfig {
19            comparator: self.comparator.unwrap_or_default(),
20        })
21    }
22    /// Create an empty builder, with all fields set to `None` or `PhantomData`.
23    fn create_empty() -> Self {
24        Self {
25            comparator: core::default::Default::default(),
26        }
27    }
28}
29
30impl From<MultiVectorConfigBuilder> for MultiVectorConfig {
31    fn from(value: MultiVectorConfigBuilder) -> Self {
32        value.build_inner().unwrap_or_else(|_| {
33            panic!(
34                "Failed to convert {0} to {1}",
35                "MultiVectorConfigBuilder", "MultiVectorConfig"
36            )
37        })
38    }
39}
40
41impl MultiVectorConfigBuilder {
42    /// Builds the desired type. Can often be omitted.
43    pub fn build(self) -> MultiVectorConfig {
44        self.build_inner().unwrap_or_else(|_| {
45            panic!(
46                "Failed to build {0} into {1}",
47                "MultiVectorConfigBuilder", "MultiVectorConfig"
48            )
49        })
50    }
51}
52
53impl MultiVectorConfigBuilder {
54    pub(crate) fn empty() -> Self {
55        Self::create_empty()
56    }
57}
58
59/// Error type for MultiVectorConfigBuilder
60#[non_exhaustive]
61#[derive(Debug)]
62pub enum MultiVectorConfigBuilderError {
63    /// Uninitialized field
64    UninitializedField(&'static str),
65    /// Custom validation error
66    ValidationError(String),
67}
68
69// Implementing the Display trait for better error messages
70impl std::fmt::Display for MultiVectorConfigBuilderError {
71    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
72        match self {
73            Self::UninitializedField(field) => {
74                write!(f, "`{field}` must be initialized")
75            }
76            Self::ValidationError(error) => write!(f, "{error}"),
77        }
78    }
79}
80
81// Implementing the Error trait
82impl std::error::Error for MultiVectorConfigBuilderError {}
83
84// Implementing From trait for conversion from UninitializedFieldError
85impl From<derive_builder::UninitializedFieldError> for MultiVectorConfigBuilderError {
86    fn from(error: derive_builder::UninitializedFieldError) -> Self {
87        Self::UninitializedField(error.field_name())
88    }
89}
90
91// Implementing From trait for conversion from String
92impl From<String> for MultiVectorConfigBuilderError {
93    fn from(error: String) -> Self {
94        Self::ValidationError(error)
95    }
96}