#json #stream #streaming #serialize #deserialize

destream

Library for async stream (de)serialization

12 releases (4 breaking)

0.5.0 Jul 5, 2021
0.4.1 Jul 5, 2021
0.4.0 May 10, 2021
0.3.2 Apr 13, 2021
0.1.4 Jan 21, 2021

#25 in #deserialize

Download history 37/week @ 2022-04-24 72/week @ 2022-05-01 106/week @ 2022-05-08 222/week @ 2022-05-15 81/week @ 2022-05-22 153/week @ 2022-05-29 90/week @ 2022-06-05 25/week @ 2022-06-12 46/week @ 2022-06-19 30/week @ 2022-06-26 29/week @ 2022-07-03 49/week @ 2022-07-10 46/week @ 2022-07-17 52/week @ 2022-07-24 44/week @ 2022-07-31 80/week @ 2022-08-07

223 downloads per month
Used in 14 crates (13 directly)

Apache-2.0

72KB
1.5K SLoC

destream

Rust library for asynchronous stream (de)serialization


lib.rs:

Provides traits [FromStream], [Decoder], [ToStream] and [Encoder], which are streaming/async analogues of [serde]'s Deserialize, Deserializer, Serialize, and Serializer.

The structure and contents of this crate are based on serde but not compatible with it (primarily because serde doesn't support async). Most of the code which makes up destream is copied directly from serde with minimal modifications.

[serde] is dual-licensed under the MIT and Apache-2.0 licenses, which are available at https://github.com/serde-rs/serde/blob/master/LICENSE-MIT and https://github.com/serde-rs/serde/blob/master/LICENSE-APACHE respectively.

Important differences between destream and serde:

  • destream supports decoding from and encoding to a futures::Stream (obviously).
  • destream does not (yet) support the derive macro, so you can't derive FromStream or ToStream, and there is no built-in functionality for decoding/encoding a given struct.
  • Decoder assumes the static lifetime and only supports owned types, but Encoder uses a specific lifetime 'en. This is the opposite of serde.

destream itself does not implement support for any specific serialization format. destream_json provides support for streaming JSON.

Dependencies

~1.2–2MB
~39K SLoC