seesaw_core 0.22.0

A deterministic, event-driven coordination layer where machines decide, effects execute, and transactions define authority
Documentation

Seesaw

A deterministic event/handler runtime with TypeId-based multi-event dispatch.

Guarantees

  • Multi-event dispatch: Support for multiple event types via TypeId routing.
  • Handler system: Register handlers that react to events and can emit new events and access shared dependencies.

Example

use seesaw::{Engine, on};

// Define event types (struct-per-event pattern)
#[derive(Clone)]
struct UserCreated { name: String }
#[derive(Clone)]
struct UserWelcomed { name: String }

// Create engine with handlers
let engine = Engine::new(deps)
    .with_handler(on::<UserCreated>().then(|event, _ctx| async move {
        println!("User created: {}", event.name);
        Ok(UserWelcomed { name: event.name.clone() })
    }));

// Emit + settle the full causal tree.
engine.emit(UserCreated { name: "Alice".into() }).settled().await?;