I typically think of teacher forcing as optional when training an RNN. We may either:
use the output of time-step $t$ as the input to time-step $t+1$
use the $(t+1)$th input as the input to time-step $t+1$
When I actually sat down to write a bidirectional RNN from scratch today I realised it would be impossible to do without 100% teacher forcing, because each time step needs access to the "history" going back to the 0th time-step (forward direction) and going back (or forward - however you want to think of it) to the last time-step (backward direction).
Is that correct?