The Session! macro compiles a small domain-specific language for describing session types into
the types themselves. It should be invoked in type position.
Internal implementation detail: This proc macro generates trait implementations of ToUnary
and ToConstant which convert type-level constants into unary representation, and vice versa.
It will generate up to the maximum number specified as the argument.
In situations where the transmitting backend for a channel is generic, explicitly writing down
all the trait bounds necessary to implement a protocol for that parameterized backend can be a
lot of boilerplate. The Receiver attribute macro abbreviates these bounds by modifying the
where clause of the item to which it is attached.
In situations where the transmitting backend for a channel is generic, explicitly writing down
all the trait bounds necessary to implement a protocol for that parameterized backend can be a
lot of boilerplate. The Transmitter attribute macro abbreviates these bounds by modifying the
where clause of the item to which it is attached.