pool-mod 0.9.0

Generic object and connection pooling. Async-safe with min/max sizing, idle timeouts, max-lifetime enforcement, validation-on-borrow, and health-check callbacks. Works for database connections, HTTP clients, worker threads, or any expensive resource.
Documentation
# pool-mod v0.1.0 — Scaffold

**The repository foundation.** v0.1.0 stands up the crate skeleton, the engineering standard that governs it, and a cross-platform CI pipeline that is green on every supported target before a single line of pooling logic is written. There is no public pooling API yet — that lands in v0.2.0. This release exists so that all subsequent work starts from a base that compiles, formats, lints, documents, and tests cleanly on Linux, macOS, and Windows, across both stable Rust and the declared MSRV.

## What is pool-mod?

A generic object and connection pool for Rust. The 1.0 target is async-safe min/max sizing, idle timeouts, max-lifetime enforcement, validation-on-borrow, and health-check callbacks — runtime-agnostic, so it works for database connections, HTTP clients, worker threads, or any expensive resource. The full scope is tracked in `.dev/ROADMAP.md`.

## What's in 0.1.0

### Crate skeleton

`src/lib.rs` carries the REPS lint discipline at the crate root — `missing_docs`, `unsafe_op_in_unsafe_fn`, the `unwrap`/`expect`/`todo`/`unimplemented` bans, the `print`/`dbg` bans, `unreachable`, and the undocumented-`unsafe` guards are all denied. The only public item is `VERSION`, populated from Cargo at build time:

```rust
assert!(!pool_mod::VERSION.is_empty());
```

A smoke test in `tests/` asserts that constant is non-empty, giving CI something real to run from day one.

### Engineering standard

`REPS.md` (Rust Efficiency & Performance Standards, v0.2.0) is the supreme authority for the repository — the canonical copy shared across the sibling crates. Every later decision about allocation discipline, `unsafe` policy, error handling, documentation, and cross-platform behavior is measured against it.

### Cross-platform CI

`.github/workflows/ci.yml` runs `cargo fmt --all -- --check`, `cargo clippy --all-targets --all-features -- -D warnings`, `cargo test --all-features`, and `cargo doc --no-deps --all-features` (with `RUSTDOCFLAGS=-D warnings`) on the full `{ubuntu, macos, windows} × {stable, 1.75.0}` matrix.

### Toolchain corrections

Three defects in the original scaffold are resolved so CI can actually pass:

- **Edition.** The crate is edition 2021. The scaffold shipped as edition 2024, which requires Rust 1.85 and made the manifest unbuildable on the declared MSRV 1.75 — the MSRV CI job could never have gone green.
- **Line endings.** A `.gitattributes` pins `* text=auto eol=lf`. Without it the GitHub Windows runner (`git autocrlf=true`) checks sources out as CRLF, and `cargo fmt --check` fails against the `newline_style = "Unix"` pin in `rustfmt.toml` — a failure that reproduces only on the Windows runner.
- **Encoding.** The source files carried a UTF-8 BOM and lacked trailing newlines; both are stripped/added to satisfy `rustfmt`.

## Breaking changes

**None.** This is the first release.

## Verification

Run on Windows x86_64 (Rust stable 1.95.0 and 1.75.0) and on Linux via WSL2 Ubuntu (Rust stable 1.95.0); these mirror the CI matrix.

```bash
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-features
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features
cargo +1.75 build --all-features
cargo +1.75 test --all-features
```

All green. Test count at this tag: 1 integration smoke test (`version_is_set`); 0 unit tests and 0 doctests, since the public surface is a single constant.

## What's next

- **0.2.0 — Foundation.** Define the public API surface: the pool types, the resource-lifecycle traits, the error type, module structure, and a first end-to-end smoke test. See `.dev/ROADMAP.md`.

## Installation

```toml
[dependencies]
pool-mod = "0.1"
```

MSRV: Rust 1.75. Edition 2021.

## Documentation

- [README]https://github.com/jamesgober/pool-mod/blob/main/README.md
- [API Reference]https://github.com/jamesgober/pool-mod/blob/main/docs/API.md
- [CHANGELOG]https://github.com/jamesgober/pool-mod/blob/main/CHANGELOG.md

---

**Changelog:** [`CHANGELOG.md`](https://github.com/jamesgober/pool-mod/blob/main/CHANGELOG.md#010---2026-05-27).