qdrant_client/builders/
max_optimization_threads_builder.rs

1use crate::qdrant::*;
2
3/// Max number of threads (jobs) for running optimizations per shard.
4/// Each optimization job will also use `max_indexing_threads` threads by itself for index building.
5///
6/// - If `auto` - have no limit and choose dynamically to saturate CPU.
7/// - If `disabled` or `0` - no optimization threads, optimizations will be disabled.
8#[derive(Clone)]
9pub struct MaxOptimizationThreadsBuilder {
10    pub(crate) inner: MaxOptimizationThreads,
11}
12
13impl MaxOptimizationThreadsBuilder {
14    /// Use specific number of optimization threads.
15    ///
16    /// - If `0` - no optimization threads, optimizations will be disabled.
17    #[inline]
18    pub fn threads(threads: u64) -> Self {
19        Self {
20            inner: MaxOptimizationThreads::from(threads),
21        }
22    }
23
24    /// No optimization threads, optimizations will be disabled.
25    #[inline]
26    pub fn disabled() -> Self {
27        Self::threads(0)
28    }
29
30    /// Have no limit and choose dynamically to saturate CPU.
31    #[inline]
32    pub fn auto() -> Self {
33        Self {
34            inner: MaxOptimizationThreads::from(max_optimization_threads::Variant::Setting(
35                max_optimization_threads::Setting::Auto as i32,
36            )),
37        }
38    }
39}
40
41impl From<MaxOptimizationThreadsBuilder> for MaxOptimizationThreads {
42    fn from(value: MaxOptimizationThreadsBuilder) -> Self {
43        value.build()
44    }
45}
46
47impl MaxOptimizationThreadsBuilder {
48    pub fn build(self) -> MaxOptimizationThreads {
49        self.inner
50    }
51}
52
53impl Default for MaxOptimizationThreadsBuilder {
54    fn default() -> Self {
55        Self::auto()
56    }
57}
58
59impl From<u64> for MaxOptimizationThreads {
60    fn from(threads: u64) -> Self {
61        MaxOptimizationThreads {
62            variant: Some(max_optimization_threads::Variant::from(threads)),
63        }
64    }
65}
66
67impl From<max_optimization_threads::Variant> for MaxOptimizationThreads {
68    fn from(setting: max_optimization_threads::Variant) -> Self {
69        MaxOptimizationThreads {
70            variant: Some(setting),
71        }
72    }
73}
74
75impl From<u64> for max_optimization_threads::Variant {
76    fn from(threads: u64) -> Self {
77        Self::Value(threads)
78    }
79}
80
81impl From<max_optimization_threads::Setting> for max_optimization_threads::Variant {
82    fn from(setting: max_optimization_threads::Setting) -> Self {
83        Self::Setting(setting as i32)
84    }
85}