pub unsafe trait CloneableCart: Clone { }
Expand description
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 Clone
d, 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.