[![Build](https://github.com/tetratelabs/envoy-wasm-rust-sdk/workflows/build/badge.svg)](https://github.com/tetratelabs/envoy-wasm-rust-sdk/actions)
[![Crate](https://img.shields.io/crates/v/envoy-sdk.svg)](https://crates.io/crates/envoy-sdk)
[![Docs](https://docs.rs/envoy-sdk/badge.svg)](https://docs.rs/envoy-sdk)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
# Rust SDK for WebAssembly-based Envoy extensions
Convenience layer on top of the original [proxy-wasm](https://github.com/proxy-wasm/proxy-wasm-rust-sdk) SDK
that brings in structure and guidance for extension developers.
## Components
* [src/](./src/)
* [extension/](./src/extension/) - base types for various `Envoy` extensions
* [access_logger/](./src/extension/access_logger/) - base types for `Envoy` `Access Logger`s
* [filter/](./src/extension/filter/) - base types for `Envoy` filters
* [http/](./src/extension/filter/http/) - base types for `Envoy` `HTTP filters`
* [network/](./src/extension/filter/network/) - base types for `Envoy` `Network filters`
* [host/](./src/host/) - types to represent various `Envoy APIs`
* [http/](./src/host/http/client.rs) - `Envoy` `HTTP Client API`
* [stream_info/](./src/host/stream_info/mod.rs) - `Envoy` `Stream Info API`
* [log](./src/host/log.rs) - `Envoy` `Log API`
* [shared_data](./src/host/shared_data.rs) - `Envoy` `Shared Data API`
* [shared_queue](./src/host/shared_queue.rs) - `Envoy` `Shared Queue API`
* [stats](./src/host/stats.rs) - `Envoy` `Stats API`
* [time](./src/host/time.rs) - `Envoy` `Time API`
## How To
### How to Set up Rust
```shell
rustup target add wasm32-unknown-unknown
```
### How To Build
```shell
cargo build:wasm
```
### How to Run unit tests
```shell
cargo test
```