The choice between structs and classes is really the choice between value and reference semantics. A good rule of thumb is to consider value semantics first, and if you are not satisfied with the outcome consider reference semantics and compare both results.
It is not allowed to create structs that does not preserve value semantics (e.g. referencing an object that may result is shared state between structs)
If you need object dependencies in a type, class should be considered first.
The choice between structs and classes is really the choice between value and reference semantics. A good rule of thumb is to consider value semantics first, and if you are not satisfied with the outcome consider reference semantics and compare both results.