Arc<String> is to
Arc<Vec<u8>> is to
Assuming that you were able to mutate the contents (e.g. by adding a Mutex), the former would allow you to modify the string in a manner that changes its length, whereas the latter would be a fixed-length slice which only allows you to change the value of the inner bytes.
For immutable content, there isn't really a benefit to using
Box<[T]> other than convenience, as the former is easier to create. And the same holds for
Furthermore, the latter may actually be slightly more efficient as IIRC you go through one less pointer.