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 thelogfeature.
§Installation
To use the library, include it in your Cargo.toml like so:
[dependencies]
iprint = "0.1.4" # Use the latest versionTo 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.