chroma_types/
quantized_cluster.rs1use std::mem::size_of_val;
2
3#[derive(Clone, Debug)]
4pub struct QuantizedCluster<'data> {
5 pub center: &'data [f32],
6 pub codes: &'data [u8],
7 pub ids: &'data [u32],
8 pub versions: &'data [u32],
9}
10
11impl QuantizedCluster<'_> {
12 pub fn compute_size(&self) -> usize {
13 size_of_val(self.center)
14 + size_of_val(self.codes)
15 + size_of_val(self.ids)
16 + size_of_val(self.versions)
17 }
18}
19
20#[derive(Clone, Debug)]
21pub struct QuantizedClusterOwned {
22 pub center: Vec<f32>,
23 pub codes: Vec<u8>,
24 pub ids: Vec<u32>,
25 pub versions: Vec<u32>,
26}
27
28impl From<QuantizedCluster<'_>> for QuantizedClusterOwned {
29 fn from(value: QuantizedCluster<'_>) -> Self {
30 Self {
31 center: value.center.to_vec(),
32 codes: value.codes.to_vec(),
33 ids: value.ids.to_vec(),
34 versions: value.versions.to_vec(),
35 }
36 }
37}
38
39impl<'data> From<&'data QuantizedClusterOwned> for QuantizedCluster<'data> {
40 fn from(value: &'data QuantizedClusterOwned) -> Self {
41 Self {
42 center: &value.center,
43 codes: &value.codes,
44 ids: &value.ids,
45 versions: &value.versions,
46 }
47 }
48}