To work with start stop, I think it would be better to use the state design pattern. And then process the states in it (https://refactoring.guru/design-patterns/state ) (https://refactoring.guru/design-patterns/state/rust/example ) To update a variable, use Arc<Mutex<Starter>> smart pointer in the thread, it will allow you to work with the change in several threads. (https://itsallaboutthebit.com/arc-mutex/)