tokio-events
A modern, type-safe async event bus for Rust applications built on Tokio.

Quick Example
let bus = builder
.build
.await?;
// Subscribe to events
bus.subscribe.await?;
// Publish events
bus.publish.await?;
Core Components
1. EventBus – The Main API
- Single instance shared across your application
- Provides
publish()andsubscribe()methods - Manages component lifecycle
2. Registry – Type Mapping
- Maps event types to their subscribers
- Uses
TypeIdfor type-safe routing - Thread-safe using
DashMap
3. Dispatcher – Event Queue
- MPSC channel for queuing events
- Worker thread processes events
- Configurable queue size and backpressure
4. Subscription Manager – Handler Execution
- Stores active handlers
- Spawns async tasks for parallel execution
- Manages subscription lifecycle

publish(UserRegistered)
↓
Create EventEnvelope (type erasure)
↓
Send to channel (Arc wrap)
↓
Worker receives
↓
Lookup by TypeId → Find handlers
↓
Spawn tasks (parallel)
↓
Each handler:
- Downcast to UserRegistered
- Execute user function
- Update metrics
↓
Cleanup (Arc refcount → 0)