def finish_world
bendvy-ecs-core@0.1.0.4 · transaction.bend:71
import bendvy-ecs-core@0.1.0.4/transaction.bend as Transaction
import Base
import bendvy-ecs-core@0.1.0.4/deferred_command.bend as Deferred
71def finish_world(~W: Type, ~E: Data, ~Error: Data,
72 ~enqueue: W -> List<&1,Deferred.Command<W>> -> W,
73 ~publish: W -> List<&2, E> -> W,
74 world: W, undo: List<&1, (W -> W)>, commands:List<&1, Deferred.Command<W>>, events: List<&2, E>, outcome: Outcome<Error>
75) -> Returned<W, Error>:
76 match outcome:
77 case Success{}:
78 committed = enqueue(world, List.reverse(&1,Deferred.Command<W>,commands))
79 Returned{publish(committed, List.reverse(&2, E, events)), Success{}}
80 case Failure{error}:
81 Returned{rollback(~W, undo, world), Failure{error}}