File: pipe.rs

package info (click to toggle)
rust-rxml 0.13.1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 800 kB
  • sloc: makefile: 2
file content (27 lines) | stat: -rw-r--r-- 607 bytes parent folder | download | duplicates (2)
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
use std::io;
use std::io::Write;

use bytes::BytesMut;

use rxml::writer::Encoder;
use rxml::Reader;

fn main() {
	let stdin = io::BufReader::new(io::stdin());
	let mut stdout = io::stdout();
	let mut enc = Encoder::new();
	let mut parser: Reader<_> = Reader::new(stdin);
	let mut buf = BytesMut::with_capacity(8192);
	let result = parser.read_all(|ev| {
		enc.encode_event_into_bytes(&ev, &mut buf)
			.expect("failed to encode xml");
		stdout
			.write_all(&buf[..])
			.expect("failed to write to stdout");
		buf.clear();
	});
	match result {
		Ok(()) => (),
		Err(e) => panic!("I/O error: {}", e),
	}
}