saydbg 0.1.0

A tiny macro for conditional debug printing with optional colored output.
Documentation
# πŸͺΆ saydbg

[![Crates.io](https://img.shields.io/crates/v/saydbg.svg)](https://crates.io/crates/saydbg)
[![Docs.rs](https://docs.rs/saydbg/badge.svg)](https://docs.rs/saydbg)
[![License](https://img.shields.io/crates/l/saydbg)](./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`:

```toml
[dependencies]
saydbg = "0.1"
```

Optionally enable features:

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

---

## 🧠 Example

```rust
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`]https://crates.io/crates/colored | ❌ |
| `timestamp` | Adds local timestamps using [`chrono`]https://crates.io/crates/chrono | ❌ |

Enable both for maximum clarity:

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

---

## 🧩 Example Project Integration

```rust
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:
```bash
cargo run --release
# (no debug output at all)
```

---

## πŸ“œ License

Licensed under the [MIT License](./LICENSE).

---

## πŸ’‘ Author

**Ryon Boswell** β€” [@crookedlungs](https://github.com/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](https://github.com/crookedlungs/saydbg).

---

> πŸ¦€ *"Debug smart, release clean."* β€” `saydbg`