As son as I move CustomStringConvertible from the protocol definition to the printTable function definition, I get a compiler error:
Playground execution failed: error: Prtcl.playground:92:12: error: argument type 'Department' does not conform to expected type 'CustomStringConvertible & TabularDataSource'
printTable(department)
^~~~~~~~~~
as! CustomStringConvertible & TabularDataSource
Why does this happen?