For vectors, as we want to support very large vectors, we want to avoid copy or clone.
So the requirement is multiple ownership but not thread safety.
However, because we are running in an async context, and because we are using cache structures that use the Arc as a key,
the cached objects has to be Sent, which then requires the use of Arc (rather than just Rc).
As computing the hash for a large vector is costly, this structures also caches the hashcode to avoid recomputing it.