bincode
is a crate for encoding and decoding using a tiny binary
serialization strategy.
There are simple functions for encoding to Vec<u8>
and decoding from
&[u8]
, but the meat of the library is the encode_into
and decode_from
functions which respectively allow encoding into a std::io::Writer
and decoding from a std::io::Buffer
.
Modules
There are two ways to encode and decode structs using bincode
, either using rustc_serialize
or the serde
crate. rustc_serialize
and serde
are crates and and also the names of their
corresponding modules inside of bincode
. Both modules have exactly equivalant functions, and
and the only difference is whether or not the library user wants to use rustc_serialize
or
serde
.
Using Basic Functions
extern crate bincode;
use bincode::{serialize, deserialize};
fn main() {
// The object that we will serialize.
let target = Some("hello world".to_string());
// The maximum size of the encoded message.
let limit = bincode::SizeLimit::Bounded(20);
let encoded: Vec<u8> = serialize(&target, limit).unwrap();
let decoded: Option<String> = deserialize(&encoded[..]).unwrap();
assert_eq!(target, decoded);
}