also for what it's worth i hate having to spell out what the enum's from too lmao
i don't know why rust doesn't make stronger inferences with that kind of stuff but haskell's usually pretty good about it... granted it also doesn't really let you have constructor names collide so maybe that's a bad example :P