A Wrapper for Arc that can be Arc<T>, Weak<T> or Empty allowing one to retain values selectively.
Arc<T>
Weak<T>
Empty
To be used when one has to store a reference to some data but if this reference needs to keep it alive or not is to be determined at runtime.