entry: disallow explicit/interior mutability for read-only storage classes. #1009
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1008 by reinstating a mutability check, but with two key differences:
&mut
forStorageBuffer
)&mut
that was never written to)&mut T
&mut T
-vs-&T
distinction is still around, but only for syntax/phrasing in diagnostics&T
whereT: !Freeze
, withFreeze
being arustc
-internal trait for "contains noUnsafeCell
s, at any inline nesting, ignoring behind pointer indirection", i.e.T: !Freeze
impliesT
containsUnsafeCell
, which would allow writing to those parts of&T
Diagnostics example:
(the messages were surprisingly tricky to phrase - interior mutability means "expected
&T
"/"found&mut T
" isn't the right distinction, as whenT: !Freeze
, they are both theoretically mutable)