Expand description
Tells you what type things are.
This crate provides the what! macro. This is functionally similar to the
todo! macro, except that it also tells you type information.
fn hello() -> Result<(), Box<dyn Error>> {
what!()
}Just like todo!, what! passes all type-checks and makes it easy to
write/build/test unfinished code. If it ever ends up in a compiled program,
attempted to execute a what! will panic.
The fun part happens when you run cargo what.
$ cargo what
hole: expecting `std::result::Result<(), Box<dyn std::error::Error>>`
--> src/hello.rs
|
2 | what!()
| ^^^^^^^Unfortunately, custom diagnostics aren’t really available to Rust libraries,
requiring the extra command. cargo what can be installed with cargo:
$ cargo install cargo-whatcargo what wraps cargo build to show the type-info of any what!s
you have in your code.
what! also accepts arguments and shows their types, which can be useful
for reducing the “unused variable” noise.
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.
Macros§
- what
- This is the core
what!macro.