-
Notifications
You must be signed in to change notification settings - Fork 212
/
stream.rs
31 lines (27 loc) · 871 Bytes
/
stream.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
extern crate csv;
use std::comm::channel;
use std::io::{ChanReader, ChanWriter, Reader, Writer};
use std::io::timer::sleep;
use std::task::spawn;
use csv::{Decoder, Encoder};
fn main() {
let (send, recv) = channel();
spawn(proc() {
let mut w = ChanWriter::new(send);
let mut enc = Encoder::to_writer(&mut w as &mut Writer);
for x in range(1, 6) {
match enc.encode((x, x * x)) {
Ok(_) => {},
Err(err) => fail!("Failed encoding: {}", err),
}
sleep(1000);
}
});
let mut r = ChanReader::new(recv);
// We create a CSV reader with a small buffer so that we can see streaming
// in action on small inputs.
let mut dec = Decoder::from_reader_capacity(&mut r as &mut Reader, 1);
for r in dec.iter() {
println!("Record: {}", r);
}
}