qdrant_client/builders/
product_quantization_builder.rs1use crate::qdrant::*;
2
3#[derive(Clone)]
4pub struct ProductQuantizationBuilder {
5 pub(crate) compression: Option<i32>,
7 pub(crate) always_ram: Option<Option<bool>>,
9}
10
11impl ProductQuantizationBuilder {
12 pub fn compression(self, value: i32) -> Self {
14 let mut new = self;
15 new.compression = Option::Some(value);
16 new
17 }
18 pub fn always_ram(self, value: bool) -> Self {
20 let mut new = self;
21 new.always_ram = Option::Some(Option::Some(value));
22 new
23 }
24
25 fn build_inner(self) -> Result<ProductQuantization, ProductQuantizationBuilderError> {
26 Ok(ProductQuantization {
27 compression: match self.compression {
28 Some(value) => value,
29 None => {
30 return Result::Err(core::convert::Into::into(
31 ::derive_builder::UninitializedFieldError::from("compression"),
32 ));
33 }
34 },
35 always_ram: self.always_ram.unwrap_or_default(),
36 })
37 }
38 fn create_empty() -> Self {
40 Self {
41 compression: core::default::Default::default(),
42 always_ram: core::default::Default::default(),
43 }
44 }
45}
46
47impl From<ProductQuantizationBuilder> for ProductQuantization {
48 fn from(value: ProductQuantizationBuilder) -> Self {
49 value.build_inner().unwrap_or_else(|_| {
50 panic!(
51 "Failed to convert {0} to {1}",
52 "ProductQuantizationBuilder", "ProductQuantization"
53 )
54 })
55 }
56}
57
58impl ProductQuantizationBuilder {
59 pub fn build(self) -> ProductQuantization {
61 self.build_inner().unwrap_or_else(|_| {
62 panic!(
63 "Failed to build {0} into {1}",
64 "ProductQuantizationBuilder", "ProductQuantization"
65 )
66 })
67 }
68}
69
70impl ProductQuantizationBuilder {
71 pub(crate) fn empty() -> Self {
72 Self::create_empty()
73 }
74}
75
76#[non_exhaustive]
78#[derive(Debug)]
79pub enum ProductQuantizationBuilderError {
80 UninitializedField(&'static str),
82 ValidationError(String),
84}
85
86impl std::fmt::Display for ProductQuantizationBuilderError {
88 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
89 match self {
90 Self::UninitializedField(field) => {
91 write!(f, "`{field}` must be initialized")
92 }
93 Self::ValidationError(error) => write!(f, "{error}"),
94 }
95 }
96}
97
98impl std::error::Error for ProductQuantizationBuilderError {}
100
101impl From<derive_builder::UninitializedFieldError> for ProductQuantizationBuilderError {
103 fn from(error: derive_builder::UninitializedFieldError) -> Self {
104 Self::UninitializedField(error.field_name())
105 }
106}
107
108impl From<String> for ProductQuantizationBuilderError {
110 fn from(error: String) -> Self {
111 Self::ValidationError(error)
112 }
113}