Refactor the whole Eval tuner to be (marginally) less boilerplatey.
Still plenty boilerplatey, and I still hate it with a passion.
But at least the serializing/deserializing from struct to array happens automatically, and we're not implementing every search feature 2x, once for the engine, once for the trace.
I could see us taking it one step further by writing a derive macro that does a lot of this stuff for us...
Refactor the whole Eval tuner to be (marginally) less boilerplatey.
Still plenty boilerplatey, and I still hate it with a passion. But at least the serializing/deserializing from struct to array happens automatically, and we're not implementing every search feature 2x, once for the engine, once for the trace.
I could see us taking it one step further by writing a derive macro that does a lot of this stuff for us...