# `tinywasm-parser`
This crate provides the parser and lowering pipeline that converts WebAssembly binaries into `tinywasm` modules.
## Features
- `std`: Enables the use of `std` and `std::io` for parsing from files and streams.
- `log`: Enables logging of the parsing process using the `log` crate.
- `parallel`: Enables multithreaded function parsing. Requires `std`.
- `validate`: Enables `wasmparser` validation. Enabled by default and configurable through `ParserOptions`.
## Usage
```rust
use tinywasm_parser::{Parser, ParserOptions};
let bytes = include_bytes!("./file.wasm");
let parser = Parser::default();
let module = parser.parse_module_bytes(bytes)?;
let parser = Parser::new(ParserOptions::default().with_rewrite_optimization(false));
let module = parser.parse_module_bytes(bytes)?;
let module = parser.parse_module_file("path/to/file.wasm")?;
let mut stream = std::fs::File::open("path/to/file.wasm")?;
let module = parser.parse_module_stream(&mut stream)?;
```
If you just want the default configuration, the top-level `parse_bytes`, `parse_file`, and `parse_stream` helpers are thin wrappers around `Parser::default()`.