Most of those abstractions and baggage come from the need to be able to represent and propagate lifetime constraints, though.

proc macros? Optional?