mirror of
https://mzte.de/git/LordMZTE/sercon.git
synced 2024-06-02 11:29:46 +02:00
31 lines
844 B
Rust
31 lines
844 B
Rust
|
use std::io::{Read, Write};
|
||
|
|
||
|
use miette::{Context, IntoDiagnostic, bail};
|
||
|
use sercon_base::Backend;
|
||
|
use serde_value::Value;
|
||
|
|
||
|
#[derive(Default)]
|
||
|
pub struct BincodeBackend;
|
||
|
|
||
|
impl Backend for BincodeBackend {
|
||
|
fn serialize(&self, out: &mut dyn Write, data: Value) -> miette::Result<()> {
|
||
|
let data = bincode::serde::encode_to_vec(
|
||
|
data,
|
||
|
bincode::config::standard().write_fixed_array_length(),
|
||
|
)
|
||
|
.into_diagnostic()
|
||
|
.wrap_err("bincode serialization error")?;
|
||
|
out.write_all(&data)
|
||
|
.into_diagnostic()
|
||
|
.wrap_err("error writing bincode data")?;
|
||
|
|
||
|
Ok(())
|
||
|
}
|
||
|
|
||
|
fn deserialize(&self, _data: &mut dyn Read) -> miette::Result<Value> {
|
||
|
bail!("Bincode does not support deserializing into any");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl_filetype_backend!(BincodeBackend, ["bincode"]);
|