The place to read data from.
The place to write data to.
A convenience wrapper for Readable and Writable.
Inner trait for reading from Input.
Inner trait for writing to Output.
Sugar for implicitly[Readable[T]].
Sugar for implicitly[Readable[T]].read(source);
Sugar for implicitly[Writable[T]].
Sugar for implicitly[Writable[T]].write(sink,what);
A base trait for brokers of serialization. See DataSerialization for a good example.
Implementors should provide member types Input and Output which are the places the data can be stored. Readable and Writable implicit instances should be created for types that can be serialized in this format. If you also inherit from CompoundTypes, you get a lot of functionality for almost free.