Part of the core-rebuild epic — follows the shared rigor contract there.
Component
src/request.rs, src/request/ask.rs, src/request/tell.rs (~2,583 LOC). ask (wait for reply) vs tell (fire-and-forget), timeouts, mailbox-full handling, blocking/try variants.
Learning & discussion
ask correlates a reply over the in-process oneshot; tell just enqueues. Capacity hit and timeout are Result, never panic (rule 4). The builder ergonomics decide the whole public send API.
Existing crates
bon for the request builders (#54) — typed, ergonomic builders over the ask/tell option matrix.
Research — best algorithm/approach
Builder ergonomics (typestate vs bon); ask/tell/timeout semantics; how backpressure is surfaced to the caller.
Testing — hard as fuck
Boundary (timeout fires; mailbox full → Result, not panic; zero-capacity), sequence, linearizability (concurrent ask/tell under contention). DST over timeout/full races. Mutation: cargo-mutants, zero survivors.
Absorbs
#54 (bon request builders).
Part of the core-rebuild epic — follows the shared rigor contract there.
Component
src/request.rs,src/request/ask.rs,src/request/tell.rs(~2,583 LOC).ask(wait for reply) vstell(fire-and-forget), timeouts, mailbox-full handling, blocking/try variants.Learning & discussion
askcorrelates a reply over the in-process oneshot;telljust enqueues. Capacity hit and timeout areResult, never panic (rule 4). The builder ergonomics decide the whole public send API.Existing crates
bonfor the request builders (#54) — typed, ergonomic builders over the ask/tell option matrix.Research — best algorithm/approach
Builder ergonomics (typestate vs
bon); ask/tell/timeout semantics; how backpressure is surfaced to the caller.Testing — hard as fuck
Boundary (timeout fires; mailbox full →
Result, not panic; zero-capacity), sequence, linearizability (concurrent ask/tell under contention). DST over timeout/full races. Mutation:cargo-mutants, zero survivors.Absorbs
#54 (bon request builders).