really like this fsmetry crate (also no_std):

fsmentry::dsl! { #[derive(Debug)] pub Mode { WaitingInput -> WaitingCommand -> WaitingInput; WaitingCommand -> SendingFile -> WaitingInput; WaitingCommand -> ReceivingFile -> WaitingInput; WaitingCommand -> Exit; } }

I use it manage life-cycle in my small serial port tool tior. I also have some #zmodem code together but it is apparently much bigger leap to implement the #cli interface than it is to implement the protocol. I had to take some time to refactor existing code (e.g. to put FSM in place) and now I’m doing file path auto-completing interface for sending and receiving files with zmodem.

For the text input I’m going to use inquire.

I guess the definition of feature complete for 0.1 version is fully working zmodem transfers and known bugs have been fixed. Right now there is a single known bug: https://github.com/jarkkojs/tior/issues/1.

#tior #fsmentry #inquire #rustlang

Akkoma