When using the builder pattern, should the intermediate representation be the same type as the final struct?
I have a question regarding the types to use when using the builder pattern. Should the final struct be a different type than the struct while it's being built? Something like an IncompleteThing that eventually becomes a Thing when built? My thinking is that a struct could be in an incomplete state until all the required builder methods are called and parameters are supplied. Or is there a better way to ensure that a struct is always in a valid state even while being built?