sercon/sercon-backends/src/backends/ron.rs
2022-02-22 21:27:36 +01:00

26 lines
729 B
Rust

use std::io::{Read, Write};
use miette::{Context, IntoDiagnostic};
use ron::ser::PrettyConfig;
use sercon_base::Backend;
use serde_value::Value;
#[derive(Default)]
pub struct RonBackend;
impl Backend for RonBackend {
fn serialize(&self, out: &mut dyn Write, data: Value) -> miette::Result<()> {
ron::ser::to_writer_pretty(out, &data, PrettyConfig::new().new_line("\n".to_string()))
.into_diagnostic()
.wrap_err("RON serialization error")
}
fn deserialize(&self, data: &mut dyn Read) -> miette::Result<Value> {
ron::de::from_reader(data)
.into_diagnostic()
.wrap_err("RON deserialization error")
}
}
impl_filetype_backend!(RonBackend, ["ron"]);