Rust Examples

Complete runnable Rust examples for Blazen

Rust Examples

Four complete, runnable examples that demonstrate core Blazen workflow patterns.


Basic Workflow

A 3-step sequential pipeline: StartEventGreetEventStopEvent.

#[derive(Debug, Clone, Serialize, Deserialize, Event)]
struct GreetEvent { name: String }

#[step]
async fn parse_input(event: StartEvent, _ctx: Context) -> Result<GreetEvent, WorkflowError> {
    Ok(GreetEvent { name: event.data["name"].as_str().unwrap_or("World").to_string() })
}
cargo run -p blazen --example basic_workflow

Streaming Workflow

Publishes progress events while processing, observable via stream_events().

ctx.write_event_to_stream(ProgressEvent { step: i, message: format!("Step {}", i) });
cargo run -p blazen --example streaming_workflow

Branching Workflow

Conditional routing based on sentiment analysis using #[step(emits = [...])].

#[step(emits = [PositiveEvent, NegativeEvent])]
async fn classify(event: AnalyzeEvent, _ctx: Context) -> Result<StepOutput, WorkflowError> {
    // route to PositiveEvent or NegativeEvent based on sentiment
}
cargo run -p blazen --example branching_workflow

LLM RAG Workflow

Multi-step RAG pipeline using context for shared state between steps.

// Typed JSON via set/get
ctx.set("documents", serde_json::json!(docs));
let docs = ctx.get("documents").unwrap();

// Direct StateValue access for cross-language or binary data
ctx.set_value("embeddings", StateValue::Bytes(embedding_bytes.into()));
cargo run -p blazen --example llm_rag_workflow