pub trait Array {
type Item: Default;
const CAPACITY: usize;
// Required methods
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§
Required Associated Constants§
Required Methods§
sourcefn as_slice(&self) -> &[Self::Item]
fn as_slice(&self) -> &[Self::Item]
Gives a shared slice over the whole thing.
A correct implementation will return a slice with a length equal to the
CAPACITY
value.
sourcefn as_slice_mut(&mut self) -> &mut [Self::Item]
fn as_slice_mut(&mut self) -> &mut [Self::Item]
Gives a unique slice over the whole thing.
A correct implementation will return a slice with a length equal to the
CAPACITY
value.