Is that the basic idea though... gotta sorta lie to the compiler about the type, there's no way for it to magically tell "this type isn't even used, so no need to specify it"?
The compiler does need to know the type. It's going to be generating all of the code-paths in that match, and it can't build the Path code-path if you don't specify the type.
I would like to add that this problem may indicate a design issue. If you have a case where you need to fake the type of the variant, then maybe the enum should be separated to structs.
Considering this particular case, I think the design around enums is correct imho (modelling different variants of shapes), but Path is a collection of points, so changing it to a slice instead of an iterator means that the only missing info is a lifetime, and then the compiler can infer it everywhere...
never might eventually fill the gap. Unlikely though; since (assuming you know a bit of c/c++ terminology) function declarations could be free from the type but it still used in definitions, which should ideally never impact an API bound.