Trait CloneableCart
unsafe trait CloneableCart: Clone
This trait marks cart types that do not change source on cloning
This is conceptually similar to stable_deref_trait::CloneStableDeref,
however stable_deref_trait::CloneStableDeref is not (and should not) be
implemented on Option (since it's not Deref). CloneableCart essentially is
"if there is data to borrow from here, cloning the cart gives you an additional
handle to the same data".
Safety
This trait is safe to implement on StableDeref types which, once Cloned, point to the same underlying data and retain ownership.
This trait can also be implemented on aggregates of such types like Option<T: CloneableCart> and (T: CloneableCart, U: CloneableCart).
Essentially, all data that could be referenced by a Yokeable (i.e. data that is referenced via a StableDeref) must retain the same pointer and ownership semantics once cloned.
Implementors
impl CloneableCart for ()impl<'a, T: ?Sized> CloneableCart for &'a Timpl<T: CloneableCart> CloneableCart for Option<T>impl<T: ?Sized> CloneableCart for Arc<T>impl<T: ?Sized> CloneableCart for Rc<T>impl<C> CloneableCart for CartableOptionPointer<C>impl<C0, C1> CloneableCart for EitherCart<C0, C1>