mirror of
https://mzte.de/git/LordMZTE/sercon.git
synced 2024-05-19 07:23:54 +02:00
26 lines
729 B
Rust
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"]);
|