Skip to main content

rs_wat2wasm/
lib.rs

1use std::io;
2
3use io::Read;
4
5use io::BufWriter;
6use io::Write;
7
8pub fn reader2wat2wasm2writer<R, W>(rdr: R, mut wtr: W, max_bytes: u64) -> Result<(), io::Error>
9where
10    R: Read,
11    W: Write,
12{
13    let mut taken = rdr.take(max_bytes);
14    let mut buf: Vec<u8> = vec![];
15    taken.read_to_end(&mut buf)?;
16    let parsed = wat::parse_bytes(&buf).map_err(io::Error::other)?;
17    let wasm: &[u8] = &parsed;
18    wtr.write_all(wasm)?;
19    wtr.flush()
20}
21
22pub const MAX_BYTES_DEFAULT: u64 = 16777216;
23
24pub fn stdin2wat2wasm2stdout(max_bytes: u64) -> Result<(), io::Error> {
25    let o = io::stdout();
26    let mut ol = o.lock();
27    reader2wat2wasm2writer(io::stdin().lock(), BufWriter::new(&mut ol), max_bytes)?;
28    ol.flush()
29}