-`sing_add_trait`, which acts as an attribute to a trait implementation and gathers the method signatures that are used by `sing_loop!`.
-`sing_loop!`, which takes a trait object and serialization/deserialization functions as well as some optional parameters. It generates a loop parsing function calls coming from STDIN (or any other `BufRead` stream), evaluating them by calling the appropriate method on the object and returning them on STDOUT (or any other `Write` stream).
Yes, it's somewhat far-fetched, but I really wanted to be able to sing and [clap](https://github.com/clap-rs/clap/tree/master/src) in my rusty command-line projects.