There seems to be some idea out there that state machines would be hard in #Rust.
From my expetience, it is pretty much the opposite:
With the decent mix of thread safety with functional and OO style features, such as encapsulating state in struct instances, it is pretty easy, but you need to understand it once, of course.
TL;DR keep an *internal* Arc<Mutex<T>> around and use it in methods - that gains you tons of capabilities.
Do operations and handle your state transforms in one place.