rivetkit_core/actor/
persist.rs1use anyhow::{Context, Result};
2use vbare::OwnedVersionedData;
3
4use crate::serde_metrics;
5
6pub(crate) fn encode_latest_with_embedded_version<T>(
7 latest: T::Latest,
8 version: u16,
9 label: &str,
10) -> Result<Vec<u8>>
11where
12 T: OwnedVersionedData,
13{
14 serde_metrics::measure_serialize("bare", label, || {
15 T::wrap_latest(latest)
16 .serialize_with_embedded_version(version)
17 .with_context(|| format!("encode {label} versioned bare payload"))
18 })
19}
20
21pub(crate) fn decode_latest_with_embedded_version<T>(
22 payload: &[u8],
23 label: &str,
24) -> Result<T::Latest>
25where
26 T: OwnedVersionedData,
27{
28 serde_metrics::measure_deserialize("bare", label, payload.len(), || {
29 <T as OwnedVersionedData>::deserialize_with_embedded_version(payload)
30 .with_context(|| format!("decode {label} versioned bare payload"))
31 })
32}