There is no reason at all to have public data members. Not because of constraints of the environment. When inlined, setters and getters do not cause any runtime cost at all. So, there is no excuse for using structs in interfaces. For internal use they might be ok, though.