cargo-what 0.1.1

Tells you what type things are
Documentation

What!

This crate is a sort of experiment in type-driven development.

This crate provides the what! macro, which very similar to Rust's todo! macro.

fn hello() -> Result<(), Box<dyn Error>> {
    what!()
}

Just like the todo! macro, the what! macro passes all typechecks to make it easy to write/build/test unfinished code. If it ever ends up in a compiled program, attempting to execute a what! macro will panic.

The fun part happens when you use the related cargo-what binary (this may require a cargo install).

$ cargo what
hole: expecting `std::result::Result<(), Box<dyn std::error::Error>>`
 --> src/hello.rs
  |
2 |     what!()
  |     ^^^^^^^

Now you can see the type-info of any what! macros you have in your program.

The what! macro can also except arguments, which helps reduce the "unused variable" noise common to traditional todo! macros

fn hello(a: usize, b: usize) -> usize {
    let c = a..b;
    what!(a, b, c)
}

And with cargo what:

$ cargo what
hole: expecting `usize`
 --> src/hello.rs
  |
3 |     what!(a, b, c)
  |     ^^^^^^^^^^^^^^
  = note: a is `usize`
  = note: b is `usize`
  = note: c is `std::ops::Range<usize>`

Emacs keybindings left as an exercise to the reader~