Skip to main content

lisp_rpc_rust_serializer/
lib.rs

1use anyhow::Result;
2use serde::{Deserialize, Serialize};
3
4pub mod deserializer;
5pub mod serializer;
6
7pub use deserializer::*;
8pub use serializer::*;
9
10/// entry function that serialize the lisp rpc struct
11pub fn lisp_rpc_to_str(v: impl Serialize) -> Result<String> {
12    let mut buf = Vec::with_capacity(1024);
13
14    let mut _s = serializer::LispRPCSerializer::new(&mut buf);
15    v.serialize(&mut _s)?;
16    let pos = _s.pos;
17
18    Ok(String::from_utf8(buf[..pos].to_vec())?)
19}
20
21/// entry function that serialize the lisp rpc struct with buffer
22pub fn lisp_rpc_to_buf(v: impl Serialize, buffer: &mut Vec<u8>) -> Result<usize> {
23    let mut _s = serializer::LispRPCSerializer::new(buffer);
24    v.serialize(&mut _s)?;
25    Ok(_s.pos)
26}
27
28/// entry function that deserialize the lisp rpc struct
29pub fn lisp_rpc_from_str<'s, T: Deserialize<'s>>(s: &'s str) -> Result<T> {
30    let mut _de = deserializer::LispRPCDeserializer::from_str(s);
31    Ok(T::deserialize(&mut _de)?)
32}