πͺΆ saydbg
A tiny, dependency-light macro crate for conditional debug printing β designed to give you
println!-style logging in debug builds, with optional color and timestamps.
In release mode, all debug macros are completely compiled out (zero cost).
β¨ Features
β
Simple println!-style usage
β
Works only in debug mode (cfg(debug_assertions))
β
Optional colored output (--features color)
β
Optional timestamps (--features timestamp)
β
Zero-cost in release builds
β
MIT licensed β free for any project
π¦ Installation
Add to your projectβs Cargo.toml:
[]
= "0.1"
Optionally enable features:
[]
= { = "0.1", = ["color", "timestamp"] }
π§ Example
use ;
π§± Default Output (Debug build)
[debug] Connected to database
[warn] Missing optional config file
[trace] Query took 5 ms
[error] User not found: admin
[log] Server started successfully
π With --features color
Colors (blue, yellow, red, gray, green) are added for easy scanning.
π With --features timestamp
[2025-10-08 12:11:47] [debug] Connected to database
[2025-10-08 12:11:47] [warn] Missing optional config file
βοΈ Macros
| Macro | Description | Color | Stream | Builds |
|---|---|---|---|---|
saydbg! |
General debug info | Blue | stdout |
Debug only |
sayerr! |
Errors | Red | stderr |
Debug only |
saywarn! |
Warnings | Yellow | stdout |
Debug only |
saytrace! |
Verbose trace info | Gray | stdout |
Debug only |
saylog! |
Always-on log (even in release) | Green | stdout |
All builds |
π Why use saydbg?
Because sometimes you donβt need a full logger β just some conditional, colorful debug messages that disappear in release builds.
saydbg sits between:
- βοΈ
println!()β simple but always prints - π§±
logortracingβ powerful but heavy for small tools
Perfect for:
- CLI utilities
- Tauri or WASM apps
- Embedded debugging
- Classroom or educational projects
- Quick prototypes or experiments
π§ Feature Flags
| Feature | Description | Default |
|---|---|---|
color |
Enables colored log labels via colored |
β |
timestamp |
Adds local timestamps using chrono |
β |
Enable both for maximum clarity:
[]
= { = "0.1", = ["color", "timestamp"] }
π§© Example Project Integration
use ;
All of these compile away completely in release:
# (no debug output at all)
π License
Licensed under the MIT License.
π‘ Author
Ryon Boswell β @crookedlungs
A developer and educator creating lightweight, modular tools for Rust and education.
π Contributing
Pull requests, feature ideas, and improvements are welcome.
You can clone this repo, modify the macros, or submit suggestions on GitHub.
π¦ "Debug smart, release clean." β
saydbg