codec: add borrow framed to allow temporary codec replacement #5831
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.
Motivation
Provide a more convenient way of temporarily replacing the codec used by the Framed struct without taking ownership of it.
Currently, the only way to replace the codec in Framed is by using the map_codec method, which consumes the Framed instance and returns a new one with the updated codec. This can be inconvenient if you want to temporarily use a different codec and then switch back to the original one, as you would need to store the original Framed instance somewhere and use map_codec to replace it every time.
Solution
Create a borrowed reference to a Framed instance and use it to construct a new BorrowFramed instance with a different codec through the new added
with_codec
function. This way, you can use the BorrowFramed instance instead of the original Framed one for as long as you need, and then discard it without affecting the original instance.