See docementation or source:
object Done {
/**
* Create an [[play.api.libs.iteratee.Iteratee]] in the “done” state.
* @param a Result
* @param e Remaining unused input
*/
def apply[E, A](a: A, e: Input[E] = Input.Empty): Iteratee[E, A] = new Iteratee[E, A] {
def fold[B](folder: Step[E, A] => Future[B]): Future[B] = folder(Step.Done(a, e))
}
}
It's not a constructor. Done(s, Input.EOF)
means Done.apply(s, Input.EOF)
. Same with Cont
.