helpers4 0.0.5

General-purpose Rust helpers, one crate, one feature per module (string, array, ...)
Documentation
# helpers4 (Rust)

> General-purpose Rust helpers: one crate, `helpers4`, one module per category, each behind its
> own Cargo feature (all enabled by default). Zero third-party dependencies by default, 100%
> test coverage, every rustdoc `# Examples` block is a doctest — treat those as verified usage.

## Conventions

- Import through the module path: `use helpers4::string::capitalize;`. Names may repeat across
  modules (`array::compact` vs `object::compact`), so never glob-import modules.
- Helpers take `&str`/slices and return owned values; nothing is mutated unless documented.
- `unsafe` is never used.

## Modules

- array — slice helpers not in `std`: `unique`, `unique_by`, `difference`, `intersection`,
  `symmetric_difference`, `intersects`, `equals_unordered`, `count_by`, `group_by`,
  `key_by`, `duplicates`, `interleave`, `cartesian_product`
- cache — in-memory stores with expiry and an injected clock: `ExpiringMap`, `ExpiringSet`
- duration — human-readable durations (`1h30m`): `parse`, `format`, `ParseDurationError`
- env — dotenv content helpers (pure text, no I/O): `parse`, `get`, `set`, `remove`
- hex — hexadecimal encoding/decoding with typed errors: `encode`, `encode_upper`, `decode`,
  `decode_to_slice`, `decode_array`
- http — HTTP header value helpers: `bearer_token` (RFC 7235 / 6750)
- iter — helpers for any `Iterator`: `chunk`, `min_max`, `first_duplicate`
- map — `HashMap` helpers: `pick`, `omit`, `map_values`
- net — network address and hostname checks: `is_public_ip` (SSRF guard, IANA registry),
  `is_valid_hostname`, `HostnameError`
- number — numeric helpers: `lerp`, `round_to`, `mean`, `median`, `percentage`, `gcd`, `lcm`
- string — string manipulation: `capitalize`, `title_case`, `camel_case`, `pascal_case`,
  `snake_case`, `kebab_case`, `constant_case`, `slugify`, `truncate`, `squish`, `indent`,
  `dedent`, `escape_html`, `unescape_html`
- validate — shape checks: `is_valid_email`, `is_uuid`, `is_slug`
- time — the system clock as unix time: `unix_now`, `unix_now_millis`, `ClockError`

## Docs

- [README.md](README.md): quick start
- [AGENTS.md](AGENTS.md): layout, rules, checks
- [CONTRIBUTING.md](CONTRIBUTING.md): how to add a helper or module