1 个不稳定版本
0.0.1 | 2024年5月2日 |
---|
#52 在 #marker
在 blok 中使用
7KB
61 行
anal-eyes * ͜*
属性宏,用于快速向函数中添加粗糙的调试标记。
在函数中每个变量声明和分号终止的表达式之后插入 println!
语句,以便在没有回溯信息或需要运行时评估行为时进行调试。
使用
- 将
anal-eyes
添加到您的项目中
$ cargo add anal_eyes
- 在您的麻烦函数(s)上方放置属性
#[anal_eyes]
use anal_eyes::anal_eyes;
use rand::{ Rng, rngs::ThreadRng };
struct Junk;
impl Junk {
#[anal_eyes]
fn see(&self, no_evil: &mut ThreadRng) -> bool {
no_evil.gen_range(0..3) == 3
}
#[anal_eyes]
fn r#do(&self) -> Self { Junk }
#[anal_eyes]
fn funky(monkey: Self) -> Self {
let mut no_evil = rand::thread_rng();
if monkey.see(&mut no_evil) {
monkey.r#do()
} else {
Self::funky(monkey)
}
}
}
#[anal_eyes]
fn main() {
Junk::funky(Junk);
}
- ???
$ cargo run
- 成功
Executing 'main'
Executing 'funky'
funky, declaration 1
Executing 'see'
Executing 'funky'
funky, declaration 1
Executing 'see'
Executing 'funky'
funky, declaration 1
Executing 'see'
{ ... }
Executing 'funky'
funky, declaration 1
Executing 'see'
thread 'main' has overflowed its stack
fatal runtime error: stack overflow
未来方向
我主要为了个人使用而开发这个crate,所以我只会根据需要扩展它。
- 更多模板格式化灵活性
- 提取并反射在println中的表达式值
- 代码行和列
- 自动清理属性的工具
免责声明
该名称是对“analyze”一词的幼稚戏谑,参考了代码审查中的“anal-retentiveness”特性。
不要禁止我!
依赖关系
~265–710KB
~17K SLoC