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