bserde 0.1.21

Library for serializing data to binary.
Documentation
use std::{
  fs,
  io::{BufReader, Read},
};

use _serde::{BDeserialize, BSerialize, BSerializeStruct, BSerializer};
extern crate bserde as _serde;

#[derive(Debug)]
struct Person {
  name: String,
  age: u8,
}

impl BSerialize<'_> for Person {
  fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
  where
    S: _serde::BSerializer,
  {
    let mut s = serializer.serialize_struct("Person", 2)?;
    s.serialize_field("name", &self.name)?;
    s.serialize_field("age", &self.age)?;
    s.end()
  }
}

impl BDeserialize for Person {
  type Error = std::io::Error;
  fn deserialize(input: &mut &[u8]) -> Result<Self, Self::Error> {
    Ok(Self {
      name: String::deserialize(input)?,
      age: u8::deserialize(input)?,
    })
  }
}

fn main() {
  let out = fs::File::create("test.bin").unwrap();
  let mut s = _serde::serializer::BinarySerializer::new();
  let p = Person {
    name: String::from("Hello, World"),
    age: 34,
  };

  p.serialize(&mut s);
  s.save(out).unwrap();

  let mut new_f = BufReader::new(fs::File::open("test.bin").unwrap());
  let mut buf = Vec::new();
  new_f.read_to_end(&mut buf).unwrap();
  let p = Person::deserialize(&mut buf.as_slice()).unwrap();
  dbg!(&p);
}