> 1. Just define multiple composite types with different move() methods > (pro), listing the same fields and constructor for each (con).
The type-def could be done with a macro. > 2. Define a single "state" type that has the necessary fields and > constructor (pro), include a "state" as a field in multiple composite types > requiring double reference (con: i.e. you need to type parser.state.field > instead of just parser.field). But this I would probably prefer.
