Consolidate unsafe byte conversions in valence_nbt #465
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.
Objective
When using valence_nbt, it's often necessary to convert to and from slices and vecs of
i8
andu8
. But this requires unsafe code if you want to avoid copying things.Solution
Expose the following functions in valence_nbt:
u8_vec_into_i8_vec(vec: Vec<u8>) -> Vec<i8>
i8_vec_into_u8_vec(vec: Vec<i8>) -> Vec<u8>
u8_slice_as_i8_slice(slice: &[u8]) -> &[i8]
i8_slice_as_u8_slice(slice: &[i8]) -> &[u8]
We've also made use of these functions ourselves to reduce the total amount of unsafe code. Should also help in #263