Start here. This is the direct spoken answer to practice first.
Why this question matters
A struct can look like a small object while silently being copied at assignments, returns, and readonly boundaries. Mutation against the wrong copy is a correctness bug that can be difficult to see in review.
A struct is a value, so reading it from a property normally returns a copy. Mutating that copy does not update the struct stored inside the owning object. Readonly fields and in parameters can also cause the compiler to make a defensive copy before calling a member that might mutate the receiver. I would first identify which storage location owns the real value, then avoid mutating a temporary copy. The clearest fix is often to make the struct readonly and return a new value for each change.