Skip to content

hybrid-array: reference conversion support#904

Merged
tarcieri merged 1 commit intomasterfrom
hybrid-array/reference-conversions
May 30, 2023
Merged

hybrid-array: reference conversion support#904
tarcieri merged 1 commit intomasterfrom
hybrid-array/reference-conversions

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