5 releases
0.1.4 | Aug 31, 2023 |
---|---|
0.1.3 | Aug 31, 2023 |
0.1.2 | Aug 31, 2023 |
0.1.1 | Aug 31, 2023 |
0.1.0 | Aug 31, 2023 |
#1527 in Rust patterns
14KB
89 lines
iprint-rs
iprint-rs
is a Rust utility library for indented printing and logging, designed to help you easily trace the execution of your code. The library provides a suite of macros for indented formatting (iformat
), simplified indented printing (iprintln
), and logging with varying levels (itrace
, idebug
, iinfo
, iwarn
, ierror
). All features are geared to improve debugging and code tracing by automatically adjusting indentation based on the function call depth.
⚠️ Warning
This library may not function correctly when compiled in release mode due to function inlining. It is recommended to use it in debug mode for accurate results.
Features
- iprintln! macro: This is an enhanced version of
println!
, adding automatic indentation. - iformat! macro: The
iformat
macro allows for custom indented formatting. - call_depth! macro: The
call_depth
macro provides the current depth of the function call stack, useful for custom logging or tracing solutions. - indented logging: Provides five levels of logging (
itrace
,idebug
,iinfo
,iwarn
,ierror
) that are feature-gated by thelog
feature.
Installation
To include iprint-rs
in your project, add the following to your Cargo.toml
:
[dependencies]
iprint = "0.1.4" # Use the latest version
To enable logging functionalities, update your Cargo.toml
like so:
[dependencies]
iprint = { version = "0.1.4", features = ["log"] }
Usage
iprintln! macro
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! macro
use iprint::iformat;
fn my_function() {
let msg = iformat!("This will be indented based on call depth.");
println!("{}", msg);
}
call_depth! macro
use iprint::call_depth;
fn custom_logging() {
let depth = call_depth!();
println!("Current call depth: {}", depth);
}
logging functions (feature-gated)
To use logging functions, make sure you have the log
feature enabled.
use iprint::iinfo;
fn yet_another_function() {
iinfo!("This is an informational message with automatic indentation.");
}
License
This project is licensed under the MIT License. See the LICENSE.md file for details.