10 releases

0.3.3 Jun 2, 2023
0.3.2 Feb 14, 2022
0.3.1 Sep 16, 2021
0.3.0 Jul 1, 2021
0.1.1 Mar 9, 2021

#298 in Asynchronous

Download history 86/week @ 2024-01-27 310/week @ 2024-02-03 123/week @ 2024-02-10 239/week @ 2024-02-17 177/week @ 2024-02-24 59/week @ 2024-03-02 162/week @ 2024-03-09 137/week @ 2024-03-16 190/week @ 2024-03-23 144/week @ 2024-03-30 186/week @ 2024-04-06 183/week @ 2024-04-13 38/week @ 2024-04-20 56/week @ 2024-04-27 66/week @ 2024-05-04 75/week @ 2024-05-11

248 downloads per month
Used in 5 crates (2 directly)

MIT license

21KB
298 lines

crates.io dependency status docs.rs MIT License Build Test Audit codecov

async-utf8-decoder

Asynchronous and incremental UTF-8 decoder

async-utf8-decoder crate provides Utf8Decoder which allows to convert any object which implements AsyncRead trait into a string stream which implements Stream trait.

Example

use futures::io;
use futures::channel::mpsc;
use async_utf8_decoder::Utf8Decoder;

let (mut tx, rx) = mpsc::unbounded::<io::Result<Vec<u8>>>();
let mut decoder = Utf8Decoder::new(rx.into_async_read());

tx.send(Ok(vec![240])).await?;
assert!(timeout(decoder.next()).await.is_err());
tx.send(Ok(vec![159])).await?;
assert!(timeout(decoder.next()).await.is_err());
tx.send(Ok(vec![146])).await?;
assert!(timeout(decoder.next()).await.is_err());
tx.send(Ok(vec![150])).await?;
assert_eq!("💖", timeout(decoder.next()).await?.unwrap()?);
assert!(timeout(decoder.next()).await.is_err());

License

The code follows MIT license written in LICENSE. Contributors need to agree that any modifications sent in this repository follow the license.

Dependencies

~0.4–0.9MB
~20K SLoC