A drop guard for modifying data bahind a Handle using a mutable reference instead of moving in a new value.
Since Storage should notify a receiver whenever data inside of it is modified, it cannot simply hand out mutable references to the value, because that’d allow outside code to implicitly perform a silent storage modification. While ways to do so are also provided, it’s heavily discouraged and reserved for special cases.
The solution to the problem is this struct: ModificationScope. It’s a drop guard which is created by providing a receiver to the storage. While it has little to no differences to a mutable reference to the data inside in terms of functionality, it notifies the receiver when dropped, ensuring that it will get modified even if a panic or any other kind of early return happens.