8 ms·
How do you model cases where the reservation fails, where the inventory operation is already complete, etc? Basically conditional transitions based on some data
by throwaway894345 17d ago
How do you model cases where the reservation fails, where the inventory operation is already complete, etc? Basically conditional transitions based on some data received? Also, where does the actual I/O happen? Presumably there is some shell that drives the state machine that does the I/O before or after executing the transition?
- vatsachak 17d agoThe I/O is done using the mutable reference to the UntypedStateMachine in the functions. For example UntypedStateMachine could just be a vec that you append to or read from. If you want to model cases with failure your return type will be Result<StateMachine<Reserved>, Error> A conditional transition should return something like (StateMachine<PostConditional>, ConditionalData)
- throwaway894345 17d agoI think this makes sense. I’m eager to try it. Some residual questions: what is “untyped” in this case and what is “PostConditional” (an enum of possible states?)? How do subsequent transitions work?
- throwaway894345 16d agoI also just realized that delegating to “UntypedStateMachine” for I/O probably doesn’t allow for Sans-I/O, right? Presumably the UntypedStateMachine must commit to either being sync or async and that must propagate to the typestate state machine itself, no?