```rust use kexplain::explain;
fn foo(a: u32, b: f64) -> u32 { let x = a * b as u32; #[noexpr] let x = a * b as u32; #[skip] let _y = a * b as u32; x * 3 }
struct Foo;
impl Foo { #[explain] fn bar(&self, a: u32, b: f64) -> u32 { let x = a * b as u32; #[noexpr] let x = a * b as u32; #[skip] let _y = a * b as u32; x * 3 } }
fn main() { asserteq!(6, foo(1, 2.)); asserteq!(6, fooexplain(1, 2., |name, expr, value| { println!("{name} {expr:?} {value}"); })); asserteq!(6, Foo.bar(1, 2.)); asserteq!(6, Foo.barexplain(1, 2., |name, expr, value| { println!("{name} {expr:?} {value}"); })); } ```
Example stdout:
text
STDOUT:
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
a None 1
b None 2
_x Some("a * b as u32") 2
x None 2
None 6
a None 1
b None 2
_x Some("a * b as u32") 2
x None 2
None 6
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈