vtx_format/
encode.rs

1use crate::{VTX_MAGIC_V1, VTX_MAGIC_V2};
2
3/// 编码 v1:VTX_MAGIC_V1 + component bytes
4pub fn encode_v1(component_bytes: &[u8]) -> Vec<u8> {
5    let mut out = Vec::with_capacity(VTX_MAGIC_V1.len() + component_bytes.len());
6    out.extend_from_slice(&VTX_MAGIC_V1);
7    out.extend_from_slice(component_bytes);
8    out
9}
10
11/// 编码 v2:VTX_MAGIC_V2 + metadata_len(u32 LE) + metadata_json + component bytes
12pub fn encode_v2(component_bytes: &[u8], metadata_json: &[u8]) -> Vec<u8> {
13    let len = metadata_json.len() as u32;
14    let mut out =
15        Vec::with_capacity(VTX_MAGIC_V2.len() + 4 + metadata_json.len() + component_bytes.len());
16    out.extend_from_slice(&VTX_MAGIC_V2);
17    out.extend_from_slice(&len.to_le_bytes());
18    out.extend_from_slice(metadata_json);
19    out.extend_from_slice(component_bytes);
20    out
21}