use std::io::{Read, Write}; use miette::{Context, IntoDiagnostic}; use sercon_base::Backend; use serde_value::Value; #[derive(Default)] pub struct SExpressionBackend; impl Backend for SExpressionBackend { fn serialize(&self, out: &mut dyn Write, data: Value) -> miette::Result<()> { serde_lexpr::to_writer(out, &data) .into_diagnostic() .wrap_err("S-Expression serialization error") } fn deserialize(&self, data: &mut dyn Read) -> miette::Result { serde_lexpr::from_reader(data) .into_diagnostic() .wrap_err("S-Expression deserialization error") } } impl_filetype_backend!(SExpressionBackend, ["sexpr"]);