Scala: types abstraits vs génériques

Je lisais A Tour of Scala: Abstract Types . Quand est-il préférable d'utiliser des types abstraits? Par exemple, abstract class Buffer { type T val element: T } plutôt que les génériques, par exemple, abstract class Buffer[T] { val element: T