lines-ext
This module contains an extension trait LinesExt
for
Stream<Item = Result<String>>
such as those returned by AsyncBufReadExt::lines
.
The trait provides the chunk_by_line
method which groups
lines into chunks given a delimiter line that separates chunks.
use async_std::io::Cursor;
use futures::AsyncBufReadExt;
use futures::stream::TryStreamExt;
use lines_ext::LinesExt;
let bytes = b"~~~
multi
line
chunk
~~~
another
chunk
";
let chunks_stream = Cursor::new(bytes).lines().chunk_by_line("~~~");
let chunks_vec: Vec<String> = chunks_stream.try_collect().await?;
assert_eq!(chunks_vec, vec!["multi\nline\nchunk\n", "another\nchunk\n"]);