1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use dharitri_codec::{EncodeError, TopEncode};

use crate::{api::ErrorApi, types::BoxedBytes};

pub fn serialize_log_data<T, EA>(data: T, api: EA) -> BoxedBytes
where
	T: TopEncode,
	EA: ErrorApi + Clone + 'static,
{
	let mut result = BoxedBytes::empty();
	data.top_encode_or_exit(&mut result, api, serialize_log_data_exit);
	result
}

#[inline(always)]
fn serialize_log_data_exit<EA>(api: EA, encode_err: EncodeError) -> !
where
	EA: ErrorApi + 'static,
{
	api.signal_error(encode_err.message_bytes())
}