Match β Multi-Branch Fan-Out (v1.46.0)
Match renders as a decision hexagon with explicit exits to both SUCCESS and FAIL. When Match is called with explicitly-typed lambda parameters, REslava.Result.Flow emits one typed fail edge per branch β all converging on the shared FAIL terminal.
Result<Order, ErrorsOf<ValidationError, InventoryError, PaymentError>>
Checkout(CheckoutRequest request) =>
Validate(request)
.Bind(ReserveInventory)
.Bind(ProcessPayment);
[ResultFlow]
public string PlaceOrder(CheckoutRequest req) =>
Checkout(req).Match(
(Order o) => Confirm(o),
(ValidationError v) => Reject(v.Message),
(InventoryError i) => Retry(i),
(PaymentError p) => Decline(p));
The typed labels (ValidationError, InventoryError, PaymentError) are extracted from the explicit parameter type annotations in each lambda β no body scanning needed. For plain Result<T> with a 2-argument Match, a generic -->|fail| FAIL edge is emitted instead. REslava.ResultFlow (library-agnostic) emits the hexagon shape and generic 2-branch edges only.