Skip to main content

rivetkit_core/actor/
persist.rs

1use 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}