saydbg 0.1.0

A tiny macro for conditional debug printing with optional colored output.
Documentation

πŸͺΆ saydbg

Crates.io Docs.rs License

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:

[dependencies]
saydbg = "0.1"

Optionally enable features:

[dependencies]
saydbg = { version = "0.1", features = ["color", "timestamp"] }

🧠 Example

use saydbg::{saydbg, saywarn, sayerr, saytrace, saylog};

fn main() {
    saydbg!("Connected to database");
    saywarn!("Missing optional config file");
    saytrace!("Query took {:?} ms", 5);
    sayerr!("User not found: {}", "admin");
    saylog!("Server started successfully");
}

🧱 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
  • 🧱 log or tracing β€” 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:

[dependencies]
saydbg = { version = "0.1", features = ["color", "timestamp"] }

🧩 Example Project Integration

use saydbg::{saydbg, saywarn, sayerr};

pub fn connect_db() {
    saydbg!("Connecting to database...");
    // ...
    saywarn!("Connection is slow, retrying...");
    sayerr!("Database unreachable after retries");
}

All of these compile away completely in release:

cargo run --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