A self-type for a trait A:
A
trait B trait A { this: B => }
says that \"A cannot be mixed into a concrete cl
A self type lets you specify what types are allowed to mixin a trait. For example, if you have a trait with a self type Closeable, then that trait knows that the only things that are allowed to mix it in, must implement the Closeable interface.
Closeable