4 releases
0.1.3 | Oct 19, 2020 |
---|---|
0.1.2 | Oct 18, 2020 |
0.1.1 | Oct 17, 2020 |
0.1.0 | Oct 17, 2020 |
#833 in Debugging
19KB
384 lines
What?
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-what
cargo 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.
Dependencies
~0–11MB
~56K SLoC