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
167 downloads per month
Used in 11 crates
(3 directly)
21KB
298 lines
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