hybrid-array: reference conversion support#904
Merged
Conversation
Adds a set of reference conversions to `Array<T, U>` as well as the `ArrayOps` trait: - `&Array<T, U>`: `From<&[T, N]>` + TryFrom<&[T]> - `&mut Array<T, U>`: `From<&mut [T, N]>` + `TryFrom<&mut [T]>` The implementation uses an unsafe pointer cast to convert a slice into the corresponding reference newtype. Additionally it adds the following panicking inherent methods to `Array<T, U>` to ease migrating code based on `GenericArray`: - `Array::ref_from_slice`: alternative to `GenericArray::from_slice` - `Array::ref_from_mut_slice`: alternative to `GenericArray::from_mut_slice` - `Array::clone_from_slice`: alternative to `GenericArray::clone_from_slice` These methods are marked with TODOs to deprecate them before a final v0.2.0 release, however for now they're not deprecate to ease a migration.
b75234f to
4a4aaef
Compare
tarcieri
added a commit
that referenced
this pull request
Sep 5, 2023
The target type on the pointer cast is incorrect: it should be `*const Array<T, U>` but instead it's `*const &Array<T, U>`. This is a memory safety error. It was introduced in #904 and thus has never been in anything but v0.2 prereleases, so it isn't particularly security-relevant.
tarcieri
added a commit
that referenced
this pull request
Sep 5, 2023
The target type on the pointer cast is incorrect: it should be `*const Array<T, U>` but instead it's `*const &Array<T, U>`. This is a memory safety error. It was introduced in #904 and thus has never been in anything but v0.2 prereleases, so it isn't particularly security-relevant.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Adds a set of reference conversions to
Array<T, U>as well as theArrayOpstrait:&Array<T, U>:From<&[T, N]>+ TryFrom<&[T]>&mut Array<T, U>:From<&mut [T, N]>+TryFrom<&mut [T]>The implementation uses an unsafe pointer cast to convert a slice into the corresponding reference newtype.
Additionally it adds the following panicking inherent methods to
Array<T, U>to ease migrating code based onGenericArray:Array::ref_from_slice: alternative toGenericArray::from_sliceArray::ref_from_mut_slice: alternative toGenericArray::from_mut_sliceArray::clone_from_slice: alternative toGenericArray::clone_from_sliceThese methods are marked with TODOs to deprecate them before a final v0.2.0 release, however for now they're not deprecate to ease a migration.