pub fn interact(tx: Sender<Coms>, rx: Receiver<()>)
Expand description

The interaction loop

It spawns another thread that is on the lookout for user input synchronously. Meanwhile this loop is checking if any of the threads (killer and synchronous input) have sent anything back.

When the killing loop send a unit type it means it has finished, and whenever this thread is free it should quit.

When the synchronous interaction returns a letter, it is processed and this thread asumes control over the interactions synchronously until it is finished. When it is finished, this thread spawns the next synchronous one

When in silent mode, it doesn’t spawn the thread and it just waits for the killing thread to be done, synchronously,