Skip to content
/ momo Public

A Rust proc_macro_attribute to outline conversions from generic functions

License

Notifications You must be signed in to change notification settings

llogiq/momo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

momo

Keep your compile time during MOnoMOrphization

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.

For now, the only place where we can put the #[momo] annotations is on plain functions.

This new updated version usesi D. Tolnay's watt runtime to speed up the compile time, which was negatively affected with proc macro baggage. Rebuilding the wasm can be done with the commands:

cd wasm
cargo build --release --target wasm32-unknown-unknown
cp wasm/target/wasm32-unknown-unknown/release/momo.wasm ../src

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

About

A Rust proc_macro_attribute to outline conversions from generic functions

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages