> 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.

Reply via email to