rust-tokio-actor-delivery
Skill0 starsChanged 39 days agoMITView on GitHub
Use when building Tokio request/reply actors or reviewing bounded-channel admission, canceled requests, overload behavior, and graceful shutdown.
In this repository66 other files it gives its agents.
- AGENTS.mdAGENTS.md
- postgres-locking-joinsSkill
- ai-bug-patternsSkill
- compressed-ndjson-boundariesSkill
- http-resume-integritySkill
- linux-io-latency-triageSkill
- macos-disk-space-recoverySkill
- minimal-sufficient-evidenceSkill
- modularize-large-filesSkill
- patch-reproducer-validitySkill
- prompt-cache-boundariesSkill
- proton-drive-selective-backupSkill
- transactional-outbox-deliverySkill
- conventional-commitsSkill
- git-advanced-mergingSkill
- git-bisect-forensicsSkill
- git-data-recoverySkill
- git-hooksSkill
- git-rerereSkill
- git-reset-mechanicsSkill
- git-revisions-syntaxSkill
- git-rewriting-historySkill
- git-submodulesSkill
- git-worktreesSkill
- github-ssh-keysSkill
- npm-publish-ci-pitfallsSkill
- sapling-stacked-pr-workflowSkill
- go-concurrency-patternsSkill
- go-data-idiomsSkill
- go-error-handlingSkill
- go-interfaces-embeddingSkill
- go-pprof-profilingSkill
- marketing-funnel-diagnosisSkill
- marketing-geo-experimentsSkill
- marketing-incrementalitySkill
- marketing-positioning-testsSkill
- python-descriptors-mroSkill
- python-logging-cookbookSkill
- python-scaling-regression-testsSkill
- python-unicode-gotchasSkill
- rust-compile-time-invariantsSkill
- rust-deterministic-concurrency-testsSkill
- rust-error-identity-boundariesSkill
- rust-regex-search-contractsSkill
- rust-runtime-bug-classesSkill
- rust-tokio-cancellation-safetySkill
- sales-discovery-qualificationSkill
- sales-mutual-action-plansSkill
- sales-pipeline-forecast-calibrationSkill
- sales-value-negotiationSkill
- ai-triage-evaluationSkill
- container-image-patchingSkill
- dependency-artifact-integritySkill
- dnssec-sentinel-diagnosticsSkill
- iam-policy-change-replaySkill
- rbvm-applicabilitySkill
- rbvm-asset-evidenceSkill
- rbvm-guarded-remediationSkill
- rbvm-priority-decisionsSkill
- rbvm-risk-exceptionsSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
If cancellation must return an unsent payload, race cancellation against Sender::reserve(), keeping the payload outside the competing …
- Distinctive: line 30
Do not describe a caller timeout as rollback or infer exactly-once execution from request/reply channels.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Tokio Actor Delivery Contracts
Separate capacity reservation, enqueue, execution, and reply receipt. A successful enqueue does not prove processing; a missing reply does not prove the operation never ran.
Admission and cancellation
- Give the actor exclusive ownership of its resource; expose a clonable sender handle. Prefer bounded mpsc when producers need backpressure and oneshot for individual replies.
- If cancellation must return an unsent payload, race cancellation against
Sender::reserve(), keeping the payload outside the competing futures. On success, usePermit::send(payload)without an intervening await. Directly racingsend(payload)can drop the payload when another branch wins. - Decide which outcome wins when admission and cancellation are both ready. Default
select!polling is randomized;biased;makes branch order significant and requires a fairness review. - Dropping a oneshot reply receiver does not retract an enqueued request. Specify whether admitted work finishes, is skipped before execution, or follows an explicit cancellation protocol. Treat failure to send a reply as expected when callers have lost interest.
Backpressure and shutdown
- Review cycles of awaited bounded sends for deadlock. Separately review strong sender-handle cycles that prevent natural shutdown. Define overload behavior for
try_sendfailures; an unbounded queue merely moves the risk to memory growth. - For graceful shutdown, close the receiver, drain until
None, and await the actor's task. Existing permits may still enqueue afterclose()and delay termination; ensure they are sent or dropped. Dropping the receiver instead discards unread messages.
Verify the contract
Use explicit ready/pending states and gates, not sleeps. Test full-queue cancellation, payload recovery, dropped replies, and shutdown with an outstanding permit. The original fixture covers these cases with Tokio =1.48.0; it is source-reviewed but runtime-unrun. Read SOURCES.md for evidence, version constraints, test instructions, and limits. Keep these protocol tests distinct from generic Loom/Shuttle schedule exploration.
Pitfalls
- Canceling
reserve()preserves an externally held payload, but loses queue position. Retrying reservation is not fairness-preserving. - A helper preserves payload only through its cancellation branch. Aborting the whole helper drops its owned state; keep recoverable state outside a future that may itself be dropped.
- Do not describe a caller timeout as rollback or infer exactly-once execution from request/reply channels. Side-effecting retries need an application-level policy.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

