#call-stack #indentation #indented #macro #automatic #logging

iprint

一个简单的调试实用程序,根据函数调用深度打印缩进文本

5 个版本

0.1.4 2023 年 8 月 31 日
0.1.3 2023 年 8 月 31 日
0.1.2 2023 年 8 月 31 日
0.1.1 2023 年 8 月 31 日
0.1.0 2023 年 8 月 31 日

#452 in 调试

MIT 许可证

14KB
89

iprint-rs

iprint-rs 是一个用于缩进打印和日志记录的 Rust 工具库,旨在帮助您轻松跟踪代码的执行。该库提供了一套宏,用于缩进格式化 (iformat)、简化的缩进打印 (iprintln) 以及不同级别的日志记录 (itraceidebugiinfoiwarnierror)。所有功能都是为了通过根据函数调用深度自动调整缩进来提高调试和代码跟踪而设计的。

⚠️ 警告

由于函数内联,此库在发布模式下编译时可能无法正常工作。建议在调试模式下使用以获得准确的结果。

特性

  • iprintln! 宏:这是 println! 的增强版本,增加了自动缩进。
  • iformat! 宏iformat 宏允许自定义缩进格式。
  • call_depth! 宏call_depth 宏提供了当前函数调用栈的深度,对于自定义日志记录或跟踪解决方案很有用。
  • 缩进日志记录:提供了五个级别的日志记录 (itraceidebugiinfoiwarnierror),这些由 log 功能控制。

安装

要将 iprint-rs 包含到您的项目中,请将以下内容添加到您的 Cargo.toml

[dependencies]
iprint = "0.1.4"  # Use the latest version

要启用日志记录功能,请更新您的 Cargo.toml 如下

[dependencies]
iprint = { version = "0.1.4", features = ["log"] }

用法

iprintln! 宏

use iprint::iprintln;

fn my_function() {
    iprintln!("This is like println! but with automatic indentation.");
    another_function();
    iprintln!("This will be indented like the first iprintln!");
}

fn another_function() {
    indent!("This message will be more indented.");
}

iformat! 宏

use iprint::iformat;

fn my_function() {
    let msg = iformat!("This will be indented based on call depth.");
    println!("{}", msg);
}

call_depth! 宏

use iprint::call_depth;

fn custom_logging() {
    let depth = call_depth!();
    println!("Current call depth: {}", depth);
}

日志函数(功能开关)

要使用日志函数,请确保已启用 log 功能。

use iprint::iinfo;

fn yet_another_function() {
    iinfo!("This is an informational message with automatic indentation.");
}

许可协议

本项目采用 MIT 许可协议。有关详细信息,请参阅 LICENSE.md 文件。

无运行时依赖

特性