# Crate Configuration — `Cargo.toml`

```toml
[package]
name        = "rok-utils"
version     = "0.1.0"
edition     = "2021"
description = "Laravel/AdonisJS-inspired utility helpers for the Rok ecosystem"
license     = "MIT"
repository  = "https://github.com/ateeq1999/rok-utils"
keywords    = ["utilities", "string", "helpers", "rok"]
categories  = ["text-processing", "data-structures"]

# ── Core (always available) ──────────────────────────────────────────
[dependencies]
thiserror   = "1.0"             # Derive-based error types
once_cell   = "1.19"            # Lazy statics / memoization

# ── Optional features ────────────────────────────────────────────────
chrono      = { version = "0.4",  optional = true }   # Date/time
serde       = { version = "1.0",  optional = true, features = ["derive"] }
serde_json  = { version = "1.0",  optional = true }
uuid        = { version = "1.6",  optional = true, features = ["v4", "v7"] }
sha2        = { version = "0.10", optional = true }   # Hashing
rand        = { version = "0.8",  optional = true }   # Random strings
unicode-segmentation = { version = "1.10", optional = true }

# ── Dev / Test ────────────────────────────────────────────────────────
[dev-dependencies]
proptest = "1.4"
criterion = { version = "0.5", features = ["html_reports"] }

# ── Feature flags ────────────────────────────────────────────────────
[features]
default  = []
full     = ["dates", "crypto", "json", "ids", "random", "unicode"]
dates    = ["dep:chrono"]
crypto   = ["dep:sha2"]
json     = ["dep:serde", "dep:serde_json"]
ids      = ["dep:uuid"]
random   = ["dep:rand"]
unicode  = ["dep:unicode-segmentation"]

[[bench]]
name    = "string_bench"
harness = false
```

## Feature Flag Usage

```rust
// Consumer opts in to only what they need:
// rok-utils = { version = "0.1", features = ["dates", "crypto"] }

#[cfg(feature = "dates")]
pub use crate::data::dates::*;

#[cfg(feature = "crypto")]
pub use crate::data::hashing::*;
```