#attributes #marker #debugging #add #quickly #macro #function

anal-eyes

属性宏,用于快速向函数中添加粗糙的调试标记

1 个不稳定版本

0.0.1 2024年5月2日

#52#marker


blok 中使用

MIT/Apache

7KB
61

anal-eyes * ͜*

属性宏,用于快速向函数中添加粗糙的调试标记。

在函数中每个变量声明和分号终止的表达式之后插入 println! 语句,以便在没有回溯信息或需要运行时评估行为时进行调试。

使用

  1. anal-eyes 添加到您的项目中
$ cargo add anal_eyes
  1. 在您的麻烦函数(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);
}

  1. ???
$ cargo run
  1. 成功
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