use alloc::vec::Vec;
use iceoryx2_log::fail;
use crate::serialize::Serialize;
use super::{DeserializeError, SerializeError};
#[derive(Debug)]
pub struct Toml {}
impl Serialize for Toml {
fn serialize<T: serde::Serialize>(value: &T) -> Result<Vec<u8>, SerializeError> {
let msg = "Failed to serialize object";
match toml::ser::to_string(value) {
Ok(mut buffer) => Ok(unsafe { buffer.as_mut_vec().clone() }),
Err(e) => {
fail!(from "Toml::serialize",
with SerializeError::InternalError,
"{} since the error ({}) occurred.", msg, e);
}
}
}
fn deserialize<T: serde::de::DeserializeOwned>(bytes: &[u8]) -> Result<T, DeserializeError> {
match toml::from_slice(bytes) {
Ok(result) => Ok(result),
Err(e) => {
fail!(from "Toml::deserialize",
with DeserializeError::InternalError, "Failed to deserialize object ({}).", e);
}
}
}
}