def swap_join
bendvy-ecs-core@0.1.0.3 · component.bend:124
import bendvy-ecs-core@0.1.0.3/component.bend as Component
import Base
import bendvy-ecs-core@0.1.0.3/change_tick.bend as Tick
import column.bend as Col
124def swap_join(~S: Data,~Store: Type,~R: Type,~E: Data,~Rest: Type,~C: Type,~V: Data,~Token: Data,~take: Store -> Rest & Col.Column<S,C>,~put: Rest -> Col.Column<S,C> -> Store,~project: C -> C & V,rest: Rest,+id: U32,incoming: Bool,tick: Tick.Tick,result: Col.SwapOutcome<S,C>) -> Store & Swap<C>:
125 match result:
126 case Col.Accepted{column,previous}: mark_swapped(~S,~Store,~R,~E,~Rest,~C,~V,~Token,~take,~put,~project,rest,column,id,incoming,tick,owner_present(~C,previous))
127 case Col.Rejected{column,incoming}: (put(rest,column),SwapRejected{incoming})