Expand description
§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: Allows for custom indented formatting.
- call_depth! macro: Provides the current depth of the function call stack, useful for custom logging or tracing solutions.
- indented logging: Offers five levels of logging (
itrace
,idebug
,iinfo
,iwarn
,ierror
) that are feature-gated by thelog
feature.
§Installation
To use the library, include it in your Cargo.toml
like so:
[dependencies]
iprint = "0.1.4" # Use the latest version
To enable the log
feature for additional logging functionalities:
[dependencies]
iprint = { version = "0.1.4", features = ["log"] }
§Usage Examples
§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() {
iprintln!("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.
#[cfg(feature = "log")]
{
use iprint::iinfo;
fn yet_another_function() {
iinfo!("This is an informational message with automatic indentation.");
}
}
Macros§
- call_
depth - Retrieves the current call depth of the function stack.
- iformat
- Formats a given string with indentation based on the current call depth.
- iprintln
- Prints a given string with automatic indentation to the console.