12 releases (2 stable)

1.0.1 May 24, 2025
1.0.0 Nov 8, 2024
0.3.3 Jun 2, 2023
0.3.2 Feb 14, 2022
0.2.0 Mar 12, 2021

#801 in Text processing

Download history 27/week @ 2025-05-28 5/week @ 2025-06-04 18/week @ 2025-06-11 31/week @ 2025-06-18 43/week @ 2025-06-25 78/week @ 2025-07-02 10/week @ 2025-07-09 13/week @ 2025-07-16 3/week @ 2025-07-23 9/week @ 2025-07-30 9/week @ 2025-08-06 49/week @ 2025-08-20 25/week @ 2025-08-27 55/week @ 2025-09-03 38/week @ 2025-09-10

167 downloads per month
Used in 11 crates (3 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

~270–730KB
~16K SLoC