This is called Context Bound introduced in Scala 2.8, which is a shorthand for providing implicit arguments. In your case, it means that, Read[A]
and Write[A]
values are implicitly provided.
Traditionally, you may provide implicit arguments for Read and Write for type A as:
def fixed[A](some params...)(implicit read: Read[A], write: Write[A]) = ???
But, same can be done using context bound as below. However, you have to use implicitly
in order to access implicit value:
def fixed[A : Read : Write](some params...) = {
val read = implicitly[Read[A]]
val write = implicitly[Write[A]]
...
}