proxima-primitives 0.1.0

The pipe algebra itself: the Pipe trait — an async In -> Result<Out, Err> that becomes a transform, source, sink or observe by choice of types — plus its three tier siblings (SendPipe, UnpinPipe, UnpinSendPipe), Handler, SourcePipe, the payload types Carry, ResponseStream and RequestStream (buffered bodies are plain Bytes), HeaderList, the sans-IO byte-stream traits, runtime-agnostic concurrency primitives, and the Replay/GenericStream transport seam. Everything else in proxima composes what is defined here.
Documentation
//! `proxima::sync::OnceCell` — async-initialized cell, shape-
//! compatible with `tokio::sync::OnceCell`. Backed by
//! `async_lock::OnceCell`. Direct re-export — `get_or_init`,
//! `get_or_try_init`, `get`, `get_mut`, `take`, `into_inner`,
//! `set`, and `wait` are all present and signature-compatible
//! with the tokio variants used in proxima today.
//!
//! # Non-coverage / minor naming drift
//!
//! - `is_initialized()` vs tokio's `initialized()` — same semantic,
//!   different name. Sites that called `initialized()` will need
//!   one-character rename; documented at the call site if it ever
//!   matters.
//! - `wait()` vs tokio's `wait_initialized()` — same semantic,
//!   different name. Same deal.
//! - `set()` returns `Result<&T, T>` (async-lock); tokio returns
//!   `Result<(), SetError<T>>` (richer error). No proxima caller
//!   uses `set()` today, so the minor divergence stays uncovered.
//!
//! Note: this codebase has multiple `OnceCell`-shaped sites
//! using `std::sync::OnceLock` (terminal-init, sync) rather than
//! `tokio::sync::OnceCell` (async init). Only `client/handle.rs`
//! uses the async-init form; this module is for that site.

pub use async_lock::OnceCell;