MCPcopy Create free account
hub / github.com/cosdata/cosdata / serialize

Method serialize

src/models/serializer/raw_vector_embedding.rs:16–83  ·  view source on GitHub ↗
(&self, bufman: &BufferManager, cursor: u64)

Source from the content-addressed store, hash-verified

14
15impl SimpleSerialize for RawVectorEmbedding {
16 fn serialize(&self, bufman: &BufferManager, cursor: u64) -> Result<u32, BufIoError> {
17 let mut buf = Vec::new();
18 write_len(&mut buf, self.id.len() as u32);
19 buf.extend(self.id.as_bytes());
20 if let Some(document_id) = &self.document_id {
21 write_len(&mut buf, document_id.len() as u32);
22 buf.extend(document_id.as_bytes());
23 } else {
24 write_len(&mut buf, 0);
25 }
26 if let Some(dense_values) = &self.dense_values {
27 write_len(&mut buf, dense_values.len() as u32);
28 for val in dense_values {
29 buf.extend(val.to_le_bytes());
30 }
31 } else {
32 write_len(&mut buf, 0);
33 }
34 if let Some(metadata) = &self.metadata {
35 write_len(&mut buf, metadata.len() as u32);
36 for (field, val) in metadata {
37 write_len(&mut buf, field.len() as u32);
38 buf.extend(field.as_bytes());
39
40 match val {
41 FieldValue::Int(int) => {
42 buf.push(0);
43 buf.extend(int.to_le_bytes());
44 }
45 FieldValue::String(str) => {
46 buf.push(1);
47 write_len(&mut buf, str.len() as u32);
48 buf.extend(str.as_bytes());
49 }
50 }
51 }
52 } else {
53 write_len(&mut buf, 0);
54 }
55
56 if let Some(sparse_values) = &self.sparse_values {
57 write_len(&mut buf, sparse_values.len() as u32);
58 for pair in sparse_values {
59 buf.extend(pair.0.to_le_bytes());
60 buf.extend(pair.1.to_le_bytes());
61 }
62 } else {
63 write_len(&mut buf, 0);
64 }
65
66 if let Some(text) = &self.text {
67 write_len(&mut buf, text.len() as u32);
68 buf.extend(text.as_bytes());
69 } else {
70 write_len(&mut buf, 0);
71 }
72
73 if let Some(bytes) = &self.bytes {

Callers

nothing calls this directly

Calls 4

write_to_end_of_fileMethod · 0.80
write_lenFunction · 0.70
lenMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected