My current posture is that this FixedSizedCollection is intended to be an API on a bag of bytes service that will be able make a solid commitment to compiler that those bytes all exist and have a value of type Element and the size of that memory will not change for the lifetime of that FixedSizedCollection. That BytesService could be owned and managed by the FixedArrayCollection, or by something reliable a client offers up on initialization (a BufferView, e.g,).
The FixedSizedCollection itself can then vend Views or Copies (stack or guaranteed deallocated at the end closures for a stack-like experience for the bigger bags of bytes) as needed to its full self or SubSequences .
If it ends up being better as a Protocol. That's doable too.
Something that a truly FixedSizedCollection will need to deal with that simply an inline view would not necessarily is... Default Values.
A fixed size array needs to know what value to use if it's stuck with a location that it's been told to create (on init only) or clear without instruction as to a new value. Should that value simply be a required parameter on any function that could result in the ambiguity or a stored value for the instance? Or should the default value be a product of the associated type instead (zero for things that have one, nil for optionals...)
Sugar is completely made up, please offer preferred alternatives
//Comes with type
[Int](7) // => a FSC of 7 .zero
var myFSC:[Int](7) = [3,2,1]. //=> [3,2,1,0,0,0,0]
[Int?](7) // => to a FSC of 7 nil
[MyType](7) //=> leads to 7 what? Is there a protocol Elements need to conform to?
//set at init
var myFSC:[Int](7, default: 5) = [3,2,1] // => [3,2,1,5,5,5,5]
myFSC.insert(12) => [3,2,1,12,5,5,5]
myFSC.clear() => [5,5,5,5,5,5,5]
//require per function
var myFSC:[Int](7, default: 5) = [3,2,1] // => [3,2,1,5,5,5,5]
myFSC.insert(12, atFirstLocationOf: 5) //=> [3,2,1,12,5,5,5]
myFSC.setAll(to:5) //=> [5,5,5,5,5,5,5]