The title pretty much says it all. I need to add an initializer to struct, via protocol extension. Can this be done?
An initializer has to be a designated initializer or a convenience initializer. An convenience initializer is "not allowed in non-class type[s]". A designated initializer has to "[initialize] all stored properties", which it cannot do, since the protocol extension would have to know the list of properties in the struct, and it cannot know that.
So I guess the answer is no.