An array where the data has shared ownership and is copy on write.
ArcArray<A, D> is parameterized by
A for the element type and
It can act as both an owner as the data as well as a shared reference (view
Calling a method for mutating elements on
ArcArray, for example
get_mut(), will break sharing and
require a clone of the data (if it is not uniquely held).
ArcArray uses atomic reference counting like
Arc, so it is
Sync (when allowed by the element type of the array too).
ArrayBase is used to implement both the owned
arrays and the views; see its docs for an overview of all array features.