SmallVec<[T; N]> is invariant over T.
Although [T; N] is covariant over T as expected.
This is due to SmallVec<A> having field of type <A as Array>::Item in underlying union.
I propose to change that field type to A and remove A: Array bound from type declaration.