1use std::io::{Cursor, Write};
2use serde;
3use error::ResultE;
4
5#[macro_use]
6mod serializer_defaults;
7
8mod bundle_serializer;
9mod pkt_serializer;
10mod pkt_type_decoder;
11mod osc_writer;
12mod msg_serializer;
13mod timetag_ser;
14
15pub use self::pkt_serializer::PktSerializer as Serializer;
16
17pub fn to_write<S: ?Sized, W: Write>(write: &mut W, value: &S) -> ResultE<()>
21 where W: Write, S: serde::ser::Serialize
22{
23 let mut ser = Serializer::new(write.by_ref());
24 value.serialize(&mut ser)
25}
26
27pub fn to_vec<T: ?Sized>(value: &T) -> ResultE<Vec<u8>>
30 where T: serde::ser::Serialize
31{
32 let mut output = Cursor::new(Vec::new());
33 to_write(&mut output, value)?;
34 Ok(output.into_inner())
35}