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.
Pull Request Overview
This adds
TakeCell::get_mut
, a function with the signaturefn get_mut(&mut self) -> Option<&mut T>
. Specifically, it bypasses the Cell nature of take_cell for when you already have access to an&mut TakeCell
.This is entirely safe, and works similarly to the corresponding method in
Cell
,Cell::get_mut
. It's made safe by the fact that the returned value is lifetime bound to the mutable borrow of theTakeCell
itself, not to'a
- and thus, requires no new unsafe code to implement.This was useful for an odd interaction with the rubble interface when implementing tock_rubble - it needs to retrieve an
&mut [u8]
multiple times safely, and then also use that buffer as an&'static mut [u8]
which can be taken out. Thus aTakeCell
, with the addition of thisget_mut
method, works well.Testing Strategy
CI
TODO or Help Wanted
Documentation Updated
/docs
, or no updates are required.Formatting
make prepush
.