Remove DerefMut impl for Mutable Handle #573
Merged
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.
Removes the
deref_mut
impl, and replaces it with an unsafeas_mut
method. As discussed in #569 (and other recent issues)deref_mut
is unsafe since it aliases with the GC, and cannot be made safe or marked unsafe.The accompanying servo change (servo/servo#36160) does not need the
as_mut
method, it feels like an appropriate escape hatch to include though.It also includes a
MutableHandle::<Option<_>>::take
method, since like in #572 that's a safe method, and #572's servo change results in it being used onMutableHandle
.Independent from (the obviously related) #572 and the similar incoming PR for
JS::MutableHandle
. Doing these all at roughly the same time feels like the right move, since otherwise we might accidentally encourage someone to convert from one of these types another to access theDerefMut
function instead of using actual alternatives.