Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hybrid-array: reference conversion support #904

Merged
merged 1 commit into from
May 30, 2023

Conversation

tarcieri
Copy link
Member

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.

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.
@tarcieri tarcieri force-pushed the hybrid-array/reference-conversions branch from b75234f to 4a4aaef Compare May 30, 2023 03:00
@tarcieri tarcieri merged commit b6cedcf into master May 30, 2023
@tarcieri tarcieri deleted the hybrid-array/reference-conversions branch May 30, 2023 03:04
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant