// Structured concurrency in Hew: a scope owns its child tasks and joins them // all before the scope expression returns. Tasks are forked with `fork { ... }` // and run on real OS threads; the enclosing `scope { }` is the join boundary. // // Constraints in this build: spawning happens inside an actor handler (which // carries the execution context); each forked function is a zero-argument, // unit-returning free function. Nested scopes compose, and an empty // `after(d) {}` arms a cancellation deadline on the surrounding scope. fn fetch_orders() { println("fetched orders"); } fn fetch_inventory() { println("fetched inventory"); } fn settle() { println("reconciled"); } actor _Pipeline { receive fn run() -> i64 { // Outer scope: two siblings fork concurrently and BOTH join here. scope { after(5s) {} fork { fetch_orders(); } fork { fetch_inventory(); } // Nested scope: its own child joins before the outer scope drains. scope { fork { settle(); } }; }; 0 } } fn main() -> i64 { let p = spawn _Pipeline; match await p.run() { Ok(code) => code, Err(_e) => 1, } }