Expand description
A tiny framework for implementing encoders/decoders of byte-oriented protocols.
§Features
- Suited for byte-oriented protocols
- Incremental encoding/decoding:
Encode
andDecode
traits support incremental encoding and decoding- The number of bytes consumed in an execution of
encode/decode
methods can be completely controlled by the caller - This property makes it easy to implement, for example, multi-stream multiplexing, transmittin rate control and asynchronous I/O
- Composable:
- By combining multiple encoders (or decoders), it is easy to build a more complex encoder (or decoder)
- See the examples of
EncodeExt
andDecodeExt
traits
- Reduced number of memory copies:
- In design, only two memory copies are required
- Considering in the decode process, one is the copy from the actual stream (e.g., TCP socket) to the decoding buffer, the other one is the copy to construct the item from the buffer.
- Supports some serde implemention crates:
- Currently serde_json and bincode are supported (as optional featuers)
- See
json_codec
andbincode_codec
modules
- Easily adapt to synchronous I/O, asynchronous I/O, UDP, etc
- Trackable errors:
- By using trackable crate, the location where an error occurred can be easily specified
- See
EncodeExt::map_err
andDecodeExt::map_err
methods
Modules§
#[cfg(feature = "bincode_codec")]
Bincode encoder and decoder that use bincode internally.- Encoders and decoders for reading/writing byte sequences.
- Encoders and decoders for combination.
- Encoders and decoders for numbers which have fixed length binary representation.
- I/O (i.e.,
Read
andWrite
traits) related module. - I/O (i.e.,
Read
andWrite
traits) related module. #[cfg(feature = "json_codec")]
JSON encoder and decoder that use serde_json internally.- Marker types.
- Monolithic encoder and decoder.
- Null decoder and encoder.
- Encoder and decoder for padding bytes.
- Slice like types.
- Encoders and decoders for tuples.
Macros§
- Tries to decode an item from the given buffer.
- Tries to encode items to the given buffer.
Structs§
Eos
contains information on the distance to the end of a stream.- This crate specific
Error
type.
Enums§
- Number of bytes of interest.
- Possible error kinds.
Traits§
- This trait allows for decoding items from a byte sequence incrementally.
- An extension of
Decode
trait. - This trait allows for encoding items into a byte sequence incrementally.
- An extension of
Encode
trait. - This trait indicates that the encoder always knows the exact bytes required to encode remaining items.
- This trait allows for decoding tagged items from a byte sequence incrementally.
- This trait allows for decoding known-tagged or unknown-tagged items from a byte sequence incrementally.
Type Aliases§
- This crate specific
Result
type.