Crate channel_io[][src]

Expand description

A simple helper library to convert Senders/Receivers into Writers/Readers.

Examples

Using a receiver as a reader

use std::io::Read;

use bytes::Bytes;
use channel_io::ChannelReader;
use flume::bounded;


let (tx, rx) = bounded(10);
let sender_thread = std::thread::spawn(move || {
    for i in 0..10 {
        let buffer = Bytes::from(vec![i; 10]);
        tx.send(buffer).unwrap();
    }
});

sender_thread.join().unwrap();

let mut reader = ChannelReader::new(rx);
let mut buffer = vec![];
reader.read_to_end(&mut buffer).unwrap();
assert_eq!(buffer.len(), 100);

Using a sender as a writer

use std::io::Write;

use bytes::Bytes;
use channel_io::ChannelWriter;
use flume::{bounded, Receiver, Sender};


let (tx, rx): (Sender<Bytes>, Receiver<Bytes>) = bounded(10);
let sender_thread = std::thread::spawn(move || {
    let mut total_read = 0;
    while let Ok(bytes) = rx.recv() {
        total_read += bytes.len();
    }
    total_read
});

let mut writer = ChannelWriter::new(tx);
writer.write_all(b"Let's add a happy little tree.").unwrap();
writer.write_all(b"And maybe a little snowcap right over here.").unwrap();
writer.flush().unwrap();
// Note we must drop the writer to dropt he sender to allow the thread to close
drop(writer);

let bytes_read = sender_thread.join().unwrap();
assert_eq!(bytes_read, 73);

Structs

A channel reader that reads bytes from a Receiver<Bytes>

A channel writer that writes bytes to a Sender<Bytes>.

Constants

The default buffer size to use (128K)