wasmer_journal/
base64.rs

1use std::borrow::Cow;
2
3use lz4_flex::block::{compress_prepend_size, decompress_size_prepended};
4
5use serde::{Deserialize, Serialize};
6use serde::{Deserializer, Serializer};
7
8pub fn serialize<S: Serializer>(v: &[u8], s: S) -> Result<S::Ok, S::Error> {
9    #[allow(deprecated)]
10    let base64 = base64::encode(compress_prepend_size(v));
11    String::serialize(&base64, s)
12}
13
14pub fn deserialize<'de, D: Deserializer<'de>>(d: D) -> Result<Cow<'static, [u8]>, D::Error> {
15    let base64 = String::deserialize(d)?;
16    #[allow(deprecated)]
17    let bytes = base64::decode(base64).map_err(serde::de::Error::custom)?;
18    decompress_size_prepended(&bytes)
19        .map_err(serde::de::Error::custom)
20        .map(|d| d.into())
21}