/*!
# Web Assembly examples

## Example of creating an infinite iterator when targeting web assembly

Because Easy ML uses randomness only via the calling code providing a source of random numbers,
you can easily swap out the source of the randomness when targeting more restrictive environments.

Random numbers can be obtained from the JavaScript `Math.random()` method which
already has bindings to Rust provided by the [js-sys](https://crates.io/crates/js-sys) crate.

```
struct EndlessRandomGenerator {}

impl Iterator for EndlessRandomGenerator {
    type Item = f64;

    fn next(&mut self) -> Option<Self::Item> {
        Some(js_sys::Math::random())
    }
}
```

## Handwritten Digit Recognition on the MNIST dataset

[Easy ML is used in an example for training a neural network to do handwritten digit recognition
here](https://github.com/Skeletonxf/easy-ml-mnist-wasm-example).
 */
