1. Maybe (definitely maybe, not sure about this) highlight valid and invalid words on the board. It depends on the emphasis. The (scrabble?) dictionary is large and capricious.
2. The rules for battles seem counterintuitive: if you have an invalid word and a winning word, the invalid word loses, but if you have a losing word and a winning word, the winning word wins? And if your opponent has a winning word and a losing or invalid word, their losing/invalid word goes away, but their winning word stays (except any letters touching your placed tile) while if you have an invalid word and a winning word, your whole winning word goes away?
3. What happens in a battle between two invalid words?
Again, congrats, and especially on doing this in rust, it must be super-performant :-)