hubpack 0.1.0

A predictable serialization format
Documentation
# `hubpack`: a predictable `serde` format

`hubpack` is an algorithm for converting Rust values to bytes and back. It was
originally designed for encoding messages sent between embedded programs. It is
designed for use with `serde`.

Some of the nice things about `hubpack` include:

- Its encoding format is relatively compact.

- Its encoding format is _predictable._ In particular, there are no
  variable-length integer encodings.

- Because the size is predictable, `hubpack` provides a `SerializedSize` trait.
  Any type that implements `SerializedSize` can report the maximum number of
  bytes necessary to encode it using `hubpack`. This means you can allocate a
  fixed-size buffer without worry. (You can `#[derive(SerializedSize)]` for your
  own types.)

- The encode/decode implementations generate fairly small, efficient code.

- The implementation uses very little `unsafe` code, only in specific cases
  with a measurable performance improvement and no reasonable alternative.

You might not want to use `hubpack` because of the following limitations:

- `hubpack` is designed for fixed-size small data structures, and cannot encode
  things like `Vec`, `str`, and maps.

- `hubpack` does not support `enum` types with more than 256 variants.

- `hubpack` aims for predictability over compactness, so certain types of data
  -- like lots of integers whose values are small relative to their types -- can
  be more compactly encoded using formats like `bincode`.