pub trait Array {
    type Item: Default;

    const CAPACITY: usize;

    fn as_slice(&self) -> &[Self::Item];
    fn as_slice_mut(&mut self) -> &mut [Self::Item];
    fn default() -> Self;
}
Expand description

A trait for types that are an array.

An “array”, for our purposes, has the following properties:

  • Owns some number of elements.
  • The element type can be generic, but must implement Default.
  • The capacity is fixed at compile time, based on the implementing type.
  • You can get a shared or mutable slice to the elements.

You are generally not expected to need to implement this yourself. It is already implemented for all the major array lengths (0..=32 and the powers of 2 up to 4,096), or for all array lengths with the feature rustc_1_55.

Additional lengths can easily be added upon request.

Safety Reminder

Just a reminder: this trait is 100% safe, which means that unsafe code must not rely on an instance of this trait being correct.

Required Associated Types

The type of the items in the thing.

Required Associated Constants

The number of slots in the thing.

Required Methods

Gives a shared slice over the whole thing.

A correct implementation will return a slice with a length equal to the CAPACITY value.

Gives a unique slice over the whole thing.

A correct implementation will return a slice with a length equal to the CAPACITY value.

Create a default-initialized instance of ourself, similar to the Default trait, but implemented for the same range of sizes as Array.

Implementations on Foreign Types

Implementors