Many structs probably should have been classes, for example a Rectangle, which may be one because of the need for speed.
I think the only problem is that "Production Level" structs CAN be used for such purposes. imo there should be an unsafe-type keyword for allowing an instance method or property to change the inner values of the struct, or simply allowing internal or private structs to use this behavior.
Structs and Value types add a kind of beauty to the language, when everything can be used in a similar fashion and has a place in C# type land, while removing those annoying special cases (for example, primitives in java). Mutability ruins this illusion.