momo 0.2.2

A procedural macro to de-monomorphize generic methods
Documentation
# momo
**Keep your compile time during MOnoMOrphization**
[![badge](https://docs.rs/momo/badge.svg)](https://docs.rs/momo)

This is a `proc_macro` crate to help keeping the code footprint of
generic methods in check. Often, generics are used in libraries to
improve ergonomics.  However,  this has a cost in compile time and
binary size.  Optimally,  one creates a  small shell function that
does the generic conversions and then calls an inner function, but
that makes the code less readable.

Add a `#[momo]`  annotation from this crate to split your function
into an outer conversion and a private inner function.  In return,
you get some compile time for a tiny bit of runtime (if at all) –
without impairing readability.

Conversions currently supported are `Into` (`.into()`), `AsRef`
(`.as_ref()`), and `AsMut` (`.as_mut()`).  See `enum Conversions`
in code.


## Notes on watt

This new updated version uses D. Tolnay's [watt] runtime to speed
up the compile time, which was negatively affected with proc macro
baggage.

The main crate uses a pre-built wasm containing the tagged version.
Rebuilding the wasm can be done with the commands:

```bash
cd wasm
cargo build --release --target wasm32-unknown-unknown
# If wasm-opt is unavailable, copying the file is fine.
wasm-opt target/wasm32-unknown-unknown/release/momo_watt.wasm -Oz \
--strip-debug --simplify-globals --vacuum -o ../src/momo.wasm
```

You might need to add the  `wasm32-unknown-unknown` target to your
Rust toolchain.

[watt]: https://github.com/dtolnay/watt

(If you are tagging a new version, remember to commit the new `wasm` file.
Also change the versions in both `Cargo.toml` files.)

## Debugging the macro

The [cargo-expand] tool may be used to expand the output of macro expansion,
including from this proc-macro.  To examine the results of the example file,
use `cargo expand --example check`.

[cargo-expand]: https://github.com/dtolnay/cargo-expand