futures_codec/lib.rs
1#![deny(missing_docs)]
2//! Utilities for encoding and decoding frames using `async/await`.
3//!
4//! Contains adapters to go from streams of bytes, [`AsyncRead`](futures::io::AsyncRead)
5//! and [`AsyncWrite`](futures::io::AsyncWrite), to framed streams implementing [`Sink`](futures::Sink) and [`Stream`](futures::Stream).
6//! Framed streams are also known as `transports`.
7//!
8//! ```
9//! # futures::executor::block_on(async move {
10//! use futures::TryStreamExt;
11//! use futures::io::Cursor;
12//! use futures_codec::{LinesCodec, Framed};
13//!
14//! let io = Cursor::new(Vec::new());
15//! let mut framed = Framed::new(io, LinesCodec);
16//!
17//! while let Some(line) = framed.try_next().await? {
18//! dbg!(line);
19//! }
20//! # Ok::<_, std::io::Error>(())
21//! # }).unwrap();
22//! ```
23
24mod codec;
25pub use codec::{BytesCodec, LengthCodec, LinesCodec};
26pub use bytes::{Bytes, BytesMut};
27
28#[cfg(feature = "cbor")]
29pub use codec::{CborCodec, CborCodecError};
30#[cfg(feature = "json")]
31pub use codec::{JsonCodec, JsonCodecError};
32
33mod decoder;
34pub use decoder::Decoder;
35
36mod encoder;
37pub use encoder::Encoder;
38
39mod framed;
40pub use framed::Framed;
41
42mod framed_read;
43pub use framed_read::FramedRead;
44
45mod framed_write;
46pub use framed_write::FramedWrite;
47
48mod fuse;