[![Documentation](https://docs.rs/iprs/badge.svg?style=flat-square)](https://docs.rs/iprs) Multiformats ============ A collection of protocols which aim to future-proof systems, today. They do this mainly by enhancing format values with self-description. This allows interoperability, protocol agility, and helps us avoid lock in. The self-describing aspects of the protocols have a few stipulations: * They MUST be **in-band** (with the value); not out-of-band (in context). * They MUST avoid **lock-in** and promote extensibility. * They MUST be **compact** and have a **binary-packed representation**. * They MUST have a **human-readable representation**. Unsigned-varint --------------- VARiable INTeger format used in all the multiformats. The encoding is: * Unsigned integers are serialized 7 bits at a time, starting with the least significant bits. * The most significant bit (msb) in each output byte indicates if there is a continuation byte (msb = 1). * There are no signed integers. * Integers are minimally encoded. Refer [unsigned-varint spec][unsigned-varint] for details. Multibase --------- Base encoding is converting binary-data to plain-text. There are several base-encoding definitions that can convert binary-data to a small subset of, typically, ASCII code. Purpose, * Printable character set. * A bridge to backward-compatibility. * When a channel cannot, do-not, allow binary data. Refer [multibase][multibase] for details. Multicodec ---------- Multicodec is an agreed-upon codec table. It is designed for use in binary representations, such as keys or identifiers (i.e [CID][CID]). Find the canonical table of multicodecs at [table.csv]. Refer [multicodec spec][multicodec] for details. **Reference**: List of active multiformat specification(s). * Micro-site, http://multiformats.io * Unsigned varint, https://github.com/multiformats/unsigned-varint * Multicodec, https://github.com/multiformats/multicodec There are other implementations that can suite your need better: * [rust implementation of multi-base][rust-multibase] [unsigned-varint]: https://github.com/multiformats/unsigned-varint [rust-multibase]: https://github.com/multiformats/rust-multibase [multibase]: https://github.com/multiformats/multibase [multicodec]: https://github.com/multiformats/multicodec [CID]: https://github.com/ipld/cid [multicodec-table]: https://github.com/multiformats/multicodec/blob/master/table.csv