pub trait DeepClone<S: Speed>: Sized {
// Required method
fn deep_clone(&self) -> Self;
// Provided method
fn fast_deep_clone(&self) -> Self
where S: FastSpeed { ... }
}Expand description
Get deep clones of a value, which do not share any semantically-important mutable state.
The goal is that the clones and their source appear to act completely independently, at least from their public interfaces; mutating or dropping one clone (among possible actions) should have no potentially-observable effect on any other independent clone.
Note also that a deep clone and its source may reference the same immutable data, even if the public interface of the type could be used to confirm that two deep clones are (or were) associated. (However, there should not be a way for either the source or any independent clone to affect that data’s value or address in memory.)
Side-channel attacks should be ignored in implementing this trait. The point is to provide deep clones, not cryptographic-quality guarantees about how those deep clones are performed.
§Exceptions
- A type implementing
DeepClonemay specify that certain methods or accesses are not subject to these guarantees. Debugshould be assumed to be an exception. Intentionally worsening the life of someone debugging your type is not a goal.- Shared mutable data which is written to but never read, or is read with effects that can only be publicly observed through exceptions, is acceptable.
§Other edge cases
- A user calling
as_ptr()and friends on references, to do address comparisons: if the address returned could change, then even if the underlying value at a new address would be the same, “the address of the data” should be considered mutable state. If that mutable state can be affected by the actions of the source of the independent clone or by other clones, then the address of the data must not be publicly exposed by the type’s interface. - Copy-on-write data: while likely permissible if properly encapsulated, presumably the source, the independent clone, or both are going to be mutated; it’d be best to give the independent clone a unique owned copy of the data. Further, if some sort of reference-counted copy-on-write scheme is used where the last clone to refer to the data doesn’t need to copy it, then the reference count used to determine that is shared mutable state. This can be avoided by simply giving the new independent clone an unique owned copy of the data, as should likely be done anyway.
Required Methods§
Sourcefn deep_clone(&self) -> Self
fn deep_clone(&self) -> Self
Get a deep clone of a value, which does not share any semantically-important mutable state.
The goal is that the clone and its source appear to act completely independently, at least from their public interfaces; mutating or dropping one clone (among possible actions) should have no potentially-observable effect on any other deep clone.
Read DeepClone for more.
Provided Methods§
Sourcefn fast_deep_clone(&self) -> Selfwhere
S: FastSpeed,
fn fast_deep_clone(&self) -> Selfwhere
S: FastSpeed,
Get a deep clone of a value, which does not share any semantically-important mutable state.
The goal is that the clone and its source appear to act completely independently, at least from their public interfaces; mutating or dropping one clone (among possible actions) should have no potentially-observable effect on any other deep clone.
Read DeepClone for more.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementations on Foreign Types§
Source§impl DeepClone<MaybeSlow> for Box<str>
Available on crate feature alloc only.
impl DeepClone<MaybeSlow> for Box<str>
alloc only.fn deep_clone(&self) -> Self
Source§impl DeepClone<MaybeSlow> for Pin<Box<str>>
Available on crate feature alloc only.
impl DeepClone<MaybeSlow> for Pin<Box<str>>
alloc only.fn deep_clone(&self) -> Self
Source§impl<K, V> DeepClone<MaybeSlow> for BTreeMap<K, V>
Available on crate feature alloc only.
impl<K, V> DeepClone<MaybeSlow> for BTreeMap<K, V>
alloc only.fn deep_clone(&self) -> Self
Source§impl<K, V, S> DeepClone<MaybeSlow> for HashMap<K, V, S>
Available on crate feature std only.
impl<K, V, S> DeepClone<MaybeSlow> for HashMap<K, V, S>
std only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for Infallible
impl<S: Speed> DeepClone<S> for Infallible
fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for PhantomPinned
impl<S: Speed> DeepClone<S> for PhantomPinned
fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicBool
Available on target_has_atomic=8 only.
impl<S: Speed> DeepClone<S> for AtomicBool
target_has_atomic=8 only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicI8
Available on target_has_atomic=8 only.
impl<S: Speed> DeepClone<S> for AtomicI8
target_has_atomic=8 only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicI16
Available on target_has_atomic=16 only.
impl<S: Speed> DeepClone<S> for AtomicI16
target_has_atomic=16 only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicI32
Available on target_has_atomic=32 only.
impl<S: Speed> DeepClone<S> for AtomicI32
target_has_atomic=32 only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicI64
Available on target_has_atomic=64 only.
impl<S: Speed> DeepClone<S> for AtomicI64
target_has_atomic=64 only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicIsize
Available on target_has_atomic=ptr only.
impl<S: Speed> DeepClone<S> for AtomicIsize
target_has_atomic=ptr only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicU8
Available on target_has_atomic=8 only.
impl<S: Speed> DeepClone<S> for AtomicU8
target_has_atomic=8 only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicU16
Available on target_has_atomic=16 only.
impl<S: Speed> DeepClone<S> for AtomicU16
target_has_atomic=16 only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicU32
Available on target_has_atomic=32 only.
impl<S: Speed> DeepClone<S> for AtomicU32
target_has_atomic=32 only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicU64
Available on target_has_atomic=64 only.
impl<S: Speed> DeepClone<S> for AtomicU64
target_has_atomic=64 only.fn deep_clone(&self) -> Self
Source§impl<S: Speed> DeepClone<S> for AtomicUsize
Available on target_has_atomic=ptr only.
impl<S: Speed> DeepClone<S> for AtomicUsize
target_has_atomic=ptr only.fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2> DeepClone<S> for fn(T1, T2) -> R
impl<S: Speed, R, T1, T2> DeepClone<S> for fn(T1, T2) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3> DeepClone<S> for fn(T1, T2, T3) -> R
impl<S: Speed, R, T1, T2, T3> DeepClone<S> for fn(T1, T2, T3) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3, T4> DeepClone<S> for fn(T1, T2, T3, T4) -> R
impl<S: Speed, R, T1, T2, T3, T4> DeepClone<S> for fn(T1, T2, T3, T4) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3, T4, T5> DeepClone<S> for fn(T1, T2, T3, T4, T5) -> R
impl<S: Speed, R, T1, T2, T3, T4, T5> DeepClone<S> for fn(T1, T2, T3, T4, T5) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3, T4, T5, T6> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6) -> R
impl<S: Speed, R, T1, T2, T3, T4, T5, T6> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7) -> R
impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8) -> R
impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8, T9> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R
impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8, T9> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R
impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R
impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R
impl<S: Speed, R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> DeepClone<S> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R
fn deep_clone(&self) -> Self
Source§impl<S: Speed, T> DeepClone<S> for Discriminant<T>
impl<S: Speed, T> DeepClone<S> for Discriminant<T>
fn deep_clone(&self) -> Self
Source§impl<S: Speed, T: ?Sized> DeepClone<S> for PhantomData<T>
impl<S: Speed, T: ?Sized> DeepClone<S> for PhantomData<T>
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>> DeepClone<Fast> for (T1, T2)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>> DeepClone<Fast> for (T1, T2)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>, T9: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>, T9: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>, T9: DeepClone<Fast>, T10: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>, T9: DeepClone<Fast>, T10: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>, T9: DeepClone<Fast>, T10: DeepClone<Fast>, T11: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>, T9: DeepClone<Fast>, T10: DeepClone<Fast>, T11: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>, T9: DeepClone<Fast>, T10: DeepClone<Fast>, T11: DeepClone<Fast>, T12: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>, T4: DeepClone<Fast>, T5: DeepClone<Fast>, T6: DeepClone<Fast>, T7: DeepClone<Fast>, T8: DeepClone<Fast>, T9: DeepClone<Fast>, T10: DeepClone<Fast>, T11: DeepClone<Fast>, T12: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1,)
impl<T1: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1,)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>, T9: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>, T9: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>, T9: DeepClone<MaybeSlow>, T10: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>, T9: DeepClone<MaybeSlow>, T10: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>, T9: DeepClone<MaybeSlow>, T10: DeepClone<MaybeSlow>, T11: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>, T9: DeepClone<MaybeSlow>, T10: DeepClone<MaybeSlow>, T11: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
fn deep_clone(&self) -> Self
Source§impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>, T9: DeepClone<MaybeSlow>, T10: DeepClone<MaybeSlow>, T11: DeepClone<MaybeSlow>, T12: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>, T4: DeepClone<MaybeSlow>, T5: DeepClone<MaybeSlow>, T6: DeepClone<MaybeSlow>, T7: DeepClone<MaybeSlow>, T8: DeepClone<MaybeSlow>, T9: DeepClone<MaybeSlow>, T10: DeepClone<MaybeSlow>, T11: DeepClone<MaybeSlow>, T12: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
fn deep_clone(&self) -> Self
Source§impl<T> DeepClone<MaybeSlow> for BinaryHeap<T>
Available on crate feature alloc only.
impl<T> DeepClone<MaybeSlow> for BinaryHeap<T>
alloc only.fn deep_clone(&self) -> Self
Source§impl<T> DeepClone<MaybeSlow> for BTreeSet<T>
Available on crate feature alloc only.
impl<T> DeepClone<MaybeSlow> for BTreeSet<T>
alloc only.fn deep_clone(&self) -> Self
Source§impl<T, S> DeepClone<MaybeSlow> for HashSet<T, S>
Available on crate feature std only.
impl<T, S> DeepClone<MaybeSlow> for HashSet<T, S>
std only.fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<Fast>> DeepClone<Fast> for RefCell<T>
impl<T: DeepClone<Fast>> DeepClone<Fast> for RefCell<T>
Source§fn deep_clone(&self) -> Self
fn deep_clone(&self) -> Self
§Panics
Panics if the value is currently mutably borrowed.
Source§impl<T: DeepClone<Fast>> DeepClone<Fast> for ManuallyDrop<T>
impl<T: DeepClone<Fast>> DeepClone<Fast> for ManuallyDrop<T>
fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<Fast>> DeepClone<Fast> for Mutex<T>
impl<T: DeepClone<Fast>> DeepClone<Fast> for Mutex<T>
Source§fn deep_clone(&self) -> Self
fn deep_clone(&self) -> Self
§Panics or Deadlocks
Panics if the Mutex is poisoned.
Will either panic or deadlock if the current thread already holds the mutex.
Source§impl<T: DeepClone<Fast>> DeepClone<Fast> for RwLock<T>
impl<T: DeepClone<Fast>> DeepClone<Fast> for RwLock<T>
Source§fn deep_clone(&self) -> Self
fn deep_clone(&self) -> Self
§Panics
Panics if the RwLock is poisoned.
Source§impl<T: DeepClone<Fast>, E: DeepClone<Fast>> DeepClone<Fast> for Result<T, E>
impl<T: DeepClone<Fast>, E: DeepClone<Fast>> DeepClone<Fast> for Result<T, E>
fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Option<T>
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Option<T>
fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Box<[T]>
Available on crate feature alloc only.
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Box<[T]>
alloc only.fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for LinkedList<T>
Available on crate feature alloc only.
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for LinkedList<T>
alloc only.fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for VecDeque<T>
Available on crate feature alloc only.
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for VecDeque<T>
alloc only.fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Vec<T>
Available on crate feature alloc only.
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Vec<T>
alloc only.fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for RefCell<T>
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for RefCell<T>
Source§fn deep_clone(&self) -> Self
fn deep_clone(&self) -> Self
§Panics
Panics if the value is currently mutably borrowed.
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for ManuallyDrop<T>
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for ManuallyDrop<T>
fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Pin<Box<[T]>>
Available on crate feature alloc only.
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Pin<Box<[T]>>
alloc only.fn deep_clone(&self) -> Self
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Mutex<T>
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Mutex<T>
Source§fn deep_clone(&self) -> Self
fn deep_clone(&self) -> Self
§Panics or Deadlocks
Panics if the Mutex is poisoned.
Will either panic or deadlock if the current thread already holds the mutex.
Source§impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for RwLock<T>
impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for RwLock<T>
Source§fn deep_clone(&self) -> Self
fn deep_clone(&self) -> Self
§Panics
Panics if the RwLock is poisoned.