async-utf8-decoder

Crates.ioasync-utf8-decoder
lib.rsasync-utf8-decoder
version1.0.0
sourcesrc
created_at2021-03-09 08:54:49.846062
updated_at2024-11-08 03:00:16.577918
descriptionConvert AsyncRead to incremental UTF8 string stream
homepage
repositoryhttps://github.com/lambdalisue/rs-async-utf8-decoder
max_upload_size
id366200
size41,561
Λlisue (lambdalisue)

documentation

README

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.

Commit count: 63

cargo fmt