This is a tracking issue for the unstable fixed_size_array feature in the standard library. This is likely to be deprecated and removed in favor of generic integers one day, and in the meantime there are not many consumers of it.
Note that the fixed_size_array feature specifically covers the FixedSizeArray trait. There's some other code in core::array, but it's all implicitly stable.
The FixedSizeArray trait would be great, except for many uses the ranges of sizes it's implemented for simply isn't what you need, and there is no way to expand it. Thus it is mostly useless in the current form.
Could the compiler magically have an "infinite" (generated on demand) number of impls of FixedSizeArray?
If that happens and the type parameter is made into an associated type (and maybe an associated const for the size is added), then most of the other impls that currently only go up to N=32 could be made generic impl<A: FixedSizeArray> … for A.
If/when the issue of using associated consts like consts is resolved, that is, allow [i32; A::LEN] to compile; then an infinite number of FixedSizeArray impls would give us the same thing as generic integer parameters.
This suggests to me that completing associated constants is basically the same problem as allowing generic integer parameters.
for now FixedSizeArray could be moved to a crate since it doesn't use any compiler magic anyway
https://crates.io/crates/arrayvec has a similar trait, called Array: https://github.com/bluss/arrayvec/blob/master/src/array.rs
Triage: no changes
Something did change in https://github.com/rust-lang/rust/pull/28088: this trait is now implemented for all sizes:
unsafe impl<T, A: Unsize<[T]>> FixedSizeArray<T> for A
The Unsize trait is also unstable: https://github.com/rust-lang/rust/issues/27732
I wrote https://github.com/rust-lang/rfcs/pull/1915 about extending and stabilizing this trait.
Most helpful comment
I wrote https://github.com/rust-lang/rfcs/pull/1915 about extending and stabilizing this trait.