|
1 | 1 | # RMP - Rust MessagePack |
2 | 2 |
|
3 | | -RMP is a pure Rust [MessagePack](http://msgpack.org) implementation. |
| 3 | +RMP is a complete pure-Rust [MessagePack](http://msgpack.org) implementation. MessagePack a compact self-describing binary serialization format. |
4 | 4 |
|
5 | | -[](https://travis-ci.org/3Hren/msgpack-rust) |
6 | | -[![Coverage Status][coveralls-img]][coveralls-url] |
| 5 | +This project consists of three crates: |
7 | 6 |
|
8 | | -This repository consists of three separate crates: the RMP core and two implementations to ease serializing and |
9 | | -deserializing Rust structs. |
10 | | - |
11 | | - crates.rs | API Documentation | |
12 | | --------------------------------------------|---------------------------------| |
13 | | - [![rmp][crates-rmp-img]][crates-rmp-url] | [RMP][rmp-docs-url] | |
14 | | - [![rmps][crates-rmps-img]][crates-rmps-url] | [RMP Serde][rmps-docs-url] | |
15 | | - [![rmpv][crates-rmpv-img]][crates-rmpv-url] | [RMP Value][rmpv-docs-url] | |
| 7 | +* [RMP-Serde][crates-rmps-url] ([Documentation][rmps-docs-url]) — easy serializing/deserializing via [Serde](https://serde.rs). |
| 8 | +* [RMP-Value][crates-rmpv-url] ([Documentation][rmpv-docs-url]) — a universal `Value` enum that can hold any MessagePack type. Allows deserializing arbitrary messages without a known schema. |
| 9 | +* [RMP][crates-rmp-url] ([Documentation][rmp-docs-url]) — low-level functions for reading/writing encoded data. |
16 | 10 |
|
17 | 11 | ## Features |
18 | 12 |
|
19 | | -- **Convenient API** |
| 13 | +- **Convenient and powerful APIs** |
20 | 14 |
|
21 | | - RMP is designed to be lightweight and straightforward. There are low-level API, which gives you |
22 | | - full control on data encoding/decoding process and makes no heap allocations. On the other hand |
23 | | - there are high-level API, which provides you convenient interface using Rust standard library and |
24 | | - compiler reflection, allowing to encode/decode structures using `derive` attribute. |
| 15 | + RMP is designed to be lightweight and straightforward. There is a high-level API with support for Serde, |
| 16 | + which provides you convenient interface for encode/decode Rust's data structures using `derive` attribute. |
| 17 | + There are also low-level APIs, which give you full control over data encoding/decoding process, |
| 18 | + with no-std support and without heap allocations. |
25 | 19 |
|
26 | 20 | - **Zero-copy value decoding** |
27 | 21 |
|
28 | | - RMP allows to decode bytes from a buffer in a zero-copy manner easily and blazingly fast, while Rust |
29 | | - static checks guarantees that the data will be valid as long as the buffer lives. |
30 | | - |
31 | | -- **Clear error handling** |
32 | | - |
33 | | - RMP's error system guarantees that you never receive an error enum with unreachable variant. |
| 22 | + RMP allows to decode bytes from a buffer in a zero-copy manner. Parsing is implemented in safe Rust. |
34 | 23 |
|
35 | | -- **Robust and tested** |
| 24 | +- **Robust, stable and tested** |
36 | 25 |
|
37 | 26 | This project is developed using TDD and CI, so any found bugs will be fixed without breaking |
38 | 27 | existing functionality. |
39 | 28 |
|
| 29 | +## Why MessagePack? |
| 30 | + |
| 31 | +Smaller and simpler to parse than JSON. Supports the same types as JSON, plus binary data, all float values, and 64-bit numbers. |
| 32 | +Encoded data is self-describing and extensible, without requiring a schema definition. |
| 33 | + |
40 | 34 | ## Requirements |
41 | 35 |
|
42 | | -- Rust 1.53.0 or later |
| 36 | +- Rust 1.56.0 or later |
43 | 37 |
|
44 | 38 | [rustc-serialize]: https://github.com/rust-lang-nursery/rustc-serialize |
45 | 39 | [serde]: https://github.com/serde-rs/serde |
46 | 40 |
|
| 41 | +[ci-img]: https://github.com/3Hren/msgpack-rust/actions/workflows/ci.yml/badge.svg |
| 42 | +[ci-url]: https://github.com/3Hren/msgpack-rust/actions/workflows/ci.yml |
| 43 | + |
47 | 44 | [coveralls-img]: https://coveralls.io/repos/3Hren/msgpack-rust/badge.svg?branch=master&service=github |
48 | 45 | [coveralls-url]: https://coveralls.io/github/3Hren/msgpack-rust?branch=master |
49 | 46 |
|
50 | 47 | [rmp-docs-url]: https://docs.rs/rmp |
51 | 48 | [rmps-docs-url]: https://docs.rs/rmp-serde |
52 | 49 | [rmpv-docs-url]: https://docs.rs/rmpv |
53 | 50 |
|
54 | | -[crates-rmp-img]: https://img.shields.io/crates/v/rmp.svg |
55 | 51 | [crates-rmp-url]: https://lib.rs/crates/rmp |
56 | | - |
57 | | -[crates-rmps-img]: https://img.shields.io/crates/v/rmp-serde.svg |
58 | 52 | [crates-rmps-url]: https://lib.rs/crates/rmp-serde |
59 | | - |
60 | | -[crates-rmpv-img]: https://img.shields.io/crates/v/rmpv.svg |
61 | 53 | [crates-rmpv-url]: https://lib.rs/crates/rmpv |
| 54 | + |
| 55 | + |
| 56 | +[![Build][ci-img]][ci-url] [![Coverage Status][coveralls-img]][coveralls-url] |
0 commit comments