summaryrefslogtreecommitdiffstats
path: root/third_party/rust/wasm-encoder/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/wasm-encoder/README.md')
-rw-r--r--third_party/rust/wasm-encoder/README.md80
1 files changed, 80 insertions, 0 deletions
diff --git a/third_party/rust/wasm-encoder/README.md b/third_party/rust/wasm-encoder/README.md
new file mode 100644
index 0000000000..5f2efbe210
--- /dev/null
+++ b/third_party/rust/wasm-encoder/README.md
@@ -0,0 +1,80 @@
+<div align="center">
+ <h1><code>wasm-encoder</code></h1>
+
+<strong>A <a href="https://bytecodealliance.org/">Bytecode Alliance</a> project</strong>
+
+ <p>
+ <strong>A WebAssembly encoder for Rust.</strong>
+ </p>
+
+ <p>
+ <a href="https://crates.io/crates/wasm-encoder"><img src="https://img.shields.io/crates/v/wasm-encoder.svg?style=flat-square" alt="Crates.io version" /></a>
+ <a href="https://crates.io/crates/wasm-encoder"><img src="https://img.shields.io/crates/d/wasm-encoder.svg?style=flat-square" alt="Download" /></a>
+ <a href="https://docs.rs/wasm-encoder/"><img src="https://img.shields.io/static/v1?label=docs&message=wasm-encoder&color=blue&style=flat-square" alt="docs.rs docs" /></a>
+ </p>
+</div>
+
+## Usage
+
+Add `wasm-encoder` to your `Cargo.toml`
+
+```sh
+$ cargo add wasm-encoder
+```
+
+And then you can encode WebAssembly binaries via:
+
+```rust
+use wasm_encoder::{
+ CodeSection, ExportKind, ExportSection, Function, FunctionSection, Instruction,
+ Module, TypeSection, ValType,
+};
+
+let mut module = Module::new();
+
+// Encode the type section.
+let mut types = TypeSection::new();
+let params = vec![ValType::I32, ValType::I32];
+let results = vec![ValType::I32];
+types.function(params, results);
+module.section(&types);
+
+// Encode the function section.
+let mut functions = FunctionSection::new();
+let type_index = 0;
+functions.function(type_index);
+module.section(&functions);
+
+// Encode the export section.
+let mut exports = ExportSection::new();
+exports.export("f", ExportKind::Func, 0);
+module.section(&exports);
+
+// Encode the code section.
+let mut codes = CodeSection::new();
+let locals = vec![];
+let mut f = Function::new(locals);
+f.instruction(&Instruction::LocalGet(0));
+f.instruction(&Instruction::LocalGet(1));
+f.instruction(&Instruction::I32Add);
+f.instruction(&Instruction::End);
+codes.function(&f);
+module.section(&codes);
+
+// Extract the encoded Wasm bytes for this module.
+let wasm_bytes = module.finish();
+
+// We generated a valid Wasm module!
+assert!(wasmparser::validate(&wasm_bytes).is_ok());
+```
+
+# License
+
+This project is licensed under the Apache 2.0 license with the LLVM exception.
+See [LICENSE](LICENSE) for more details.
+
+### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in this project by you, as defined in the Apache-2.0 license,
+shall be licensed as above, without any additional terms or conditions.