Trait AsArrayRef

pub trait AsArrayRef<T>: AssocArraySize

Obtain an &Array reference for a given type.

This provides functionality equivalent to AsRef<Array> or Borrow<Array>, but is deliberately implemented as its own trait both so it can leverage AssocArraySize to determine the array size, and also to avoid inference problems that occur when third party impls of traits like AsRef and Borrow are added to [T; N].

Usage with [T; N]

use hybrid_array::{Array, ArraySize, AsArrayRef};

pub fn getn_hybrid<T, U: ArraySize>(arr: &Array<T, U>, n: usize) -> &T {
    &arr[2]
}

pub fn getn_generic<T, const N: usize>(arr: &[T; N], n: usize) -> &T
where
    [T; N]: AsArrayRef<T>
{
    getn_hybrid(arr.as_array_ref(), n)
}

let array = [0u8, 1, 2, 3];
let x = getn_generic(&array, 2);
assert_eq!(x, &2);

Required Methods

fn as_array_ref(&self) -> &Array<T, Self::Size>

Converts this type into an immutable Array reference.

Implementors