Como dividir uma lista [A, B]

Eu quero dividir umList[Either[A, B]] em duas listas.

Existe uma maneira melhor ?

def lefts[A, B](eithers : List[Either[A, B]]) : List[A] = eithers.collect { case Left(l) => l}
def rights[A, B](eithers : List[Either[A, B]]) : List[B] = eithers.collect { case Right(r) => r}