```rust
fn doroundtripcoders(dummies: Vec
let mut decoder =
ProstDecoder::<proto::Dummy>::new_decompressed(compressed.as_slice()).unwrap();
let mut i: usize = 0;
while let Some(dummy) = decoder.next() {
let dummy = dummy.unwrap();
assert_eq!(&dummy, dummies.get(i).unwrap());
i += 1;
}
assert_eq!(dummies.len(), i);
} ```
Cargo.toml:
toml
prosto = { version = "0.1", features = ["enable-tokio"] }
```rust
fn doroundtripchannels(dummies: Vec
let mut rt = Runtime::new().unwrap();
let (mut source, urx) = mpsc::channel::<proto::Dummy>(dummies.len());
let (ctx, crx) = mpsc::channel::<Vec<u8>>(dummies.len());
let (utx, mut sink) = mpsc::channel::<proto::Dummy>(dummies.len());
let compressor = Compressor::new(urx, ctx, 256 * 1024, 5);
let decompressor = Decompressor::new(crx, utx);
rt.block_on(async move {
tokio::task::spawn(compressor.compress());
tokio::task::spawn(decompressor.decompress());
for dummy in &dummies {
source.send(dummy.clone()).await.unwrap();
}
std::mem::drop(source);
let mut i: usize = 0;
while let Some(dummy) = sink.recv().await {
assert_eq!(&dummy, dummies.get(i).unwrap());
i += 1;
}
assert_eq!(dummies.len(), i);
});
} ```