MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / to_bytes

Method to_bytes

nodedb-vector/src/rerank/sidecar.rs:59–85  ·  view source on GitHub ↗

Serialize the sidecar (codec state + all encoded vectors) to bytes. Format: `[NDCC (4 bytes)][version: u8 = 1][msgpack payload]`

(&self)

Source from the content-addressed store, hash-verified

57 ///
58 /// Format: `[NDCC (4 bytes)][version: u8 = 1][msgpack payload]`
59 pub fn to_bytes(&self) -> Result<Vec<u8>, RerankError> {
60 let codec_bytes = self.codec.to_bytes()?;
61 let codec_name_byte = codec_name_to_u8(self.codec.name());
62
63 #[derive(
64 serde::Serialize, serde::Deserialize, zerompk::ToMessagePack, zerompk::FromMessagePack,
65 )]
66 struct Payload {
67 codec_name: u8,
68 codec_bytes: Vec<u8>,
69 encoded: Vec<(u32, Vec<u8>)>,
70 }
71
72 let payload = Payload {
73 codec_name: codec_name_byte,
74 codec_bytes,
75 encoded: self.encoded.iter().map(|(k, v)| (*k, v.clone())).collect(),
76 };
77
78 let body = zerompk::to_msgpack_vec(&payload)
79 .map_err(|e| RerankError::BadInput(format!("sidecar serialize: {e}")))?;
80 let mut buf = Vec::with_capacity(5 + body.len());
81 buf.extend_from_slice(&SIDECAR_MAGIC);
82 buf.push(SIDECAR_VERSION);
83 buf.extend_from_slice(&body);
84 Ok(buf)
85 }
86
87 /// Deserialize a sidecar from bytes produced by [`Self::to_bytes`].
88 pub fn from_bytes(bytes: &[u8]) -> Result<Self, RerankError> {

Calls 7

codec_name_to_u8Function · 0.85
collectMethod · 0.80
nameMethod · 0.45
iterMethod · 0.45
cloneMethod · 0.45
lenMethod · 0.45
pushMethod · 0.45