DeepClone

Trait DeepClone 

Source
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 DeepClone may specify that certain methods or accesses are not subject to these guarantees.
  • Debug should 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§

Source

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§

Source

fn fast_deep_clone(&self) -> Self
where 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.
Source§

fn deep_clone(&self) -> Self

Source§

impl DeepClone<MaybeSlow> for Pin<Box<str>>

Available on crate feature alloc only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<K, V> DeepClone<MaybeSlow> for BTreeMap<K, V>

Available on crate feature alloc only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<K, V, S> DeepClone<MaybeSlow> for HashMap<K, V, S>

Available on crate feature std only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for Ordering

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for Infallible

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for Ordering

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for bool

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for char

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for f32

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for f64

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for i8

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for i16

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for i32

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for i64

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for i128

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for isize

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for u8

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for u16

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for u32

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for u64

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for u128

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for ()

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for usize

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for Layout

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for TypeId

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for PhantomPinned

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<i8>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<i16>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<i32>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<i64>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<i128>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<isize>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<u8>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<u16>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<u32>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<u64>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<u128>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for NonZero<usize>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for RangeFull

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicBool

Available on target_has_atomic=8 only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicI8

Available on target_has_atomic=8 only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicI16

Available on target_has_atomic=16 only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicI32

Available on target_has_atomic=32 only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicI64

Available on target_has_atomic=64 only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicIsize

Available on target_has_atomic=ptr only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicU8

Available on target_has_atomic=8 only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicU16

Available on target_has_atomic=16 only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicU32

Available on target_has_atomic=32 only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicU64

Available on target_has_atomic=64 only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for AtomicUsize

Available on target_has_atomic=ptr only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for Duration

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for ThreadId

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed> DeepClone<S> for Instant

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed, R> DeepClone<S> for fn() -> R

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed, R, T1> DeepClone<S> for fn(T1) -> R

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed, R, T1, T2> DeepClone<S> for fn(T1, T2) -> R

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed, R, T1, T2, T3> DeepClone<S> for fn(T1, T2, T3) -> R

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed, R, T1, T2, T3, T4> DeepClone<S> for fn(T1, T2, T3, T4) -> R

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed, T> DeepClone<S> for Empty<T>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed, T> DeepClone<S> for Discriminant<T>

Source§

fn deep_clone(&self) -> Self

Source§

impl<S: Speed, T: ?Sized> DeepClone<S> for PhantomData<T>

Source§

fn deep_clone(&self) -> Self

Source§

impl<T1: DeepClone<Fast>> DeepClone<Fast> for (T1,)

Source§

fn deep_clone(&self) -> Self

Source§

impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>> DeepClone<Fast> for (T1, T2)

Source§

fn deep_clone(&self) -> Self

Source§

impl<T1: DeepClone<Fast>, T2: DeepClone<Fast>, T3: DeepClone<Fast>> DeepClone<Fast> for (T1, T2, T3)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

fn deep_clone(&self) -> Self

Source§

impl<T1: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1,)

Source§

fn deep_clone(&self) -> Self

Source§

impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2)

Source§

fn deep_clone(&self) -> Self

Source§

impl<T1: DeepClone<MaybeSlow>, T2: DeepClone<MaybeSlow>, T3: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for (T1, T2, T3)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

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)

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<Fast> for Box<T>
where T: DeepClone<Fast>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<Fast> for Rc<T>
where T: ?Sized + DeepClone<Fast>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<Fast> for Weak<T>
where T: ?Sized + DeepClone<Fast>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<Fast> for Arc<T>
where T: ?Sized + DeepClone<Fast>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<Fast> for Weak<T>
where T: ?Sized + DeepClone<Fast>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<Fast> for Cell<T>
where T: Copy + DeepClone<Fast>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<Fast> for Pin<Rc<T>>
where T: ?Sized + DeepClone<Fast>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<Fast> for Pin<Arc<T>>
where T: ?Sized + DeepClone<Fast>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for Box<T>
where T: DeepClone<MaybeSlow>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for BinaryHeap<T>
where T: Ord + DeepClone<MaybeSlow>,

Available on crate feature alloc only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for BTreeSet<T>
where T: Ord + DeepClone<MaybeSlow>,

Available on crate feature alloc only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for Rc<T>
where T: ?Sized + DeepClone<MaybeSlow>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for Weak<T>
where T: ?Sized + DeepClone<MaybeSlow>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for Arc<T>
where T: ?Sized + DeepClone<MaybeSlow>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for Weak<T>
where T: ?Sized + DeepClone<MaybeSlow>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for Cell<T>
where T: Copy + DeepClone<MaybeSlow>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for Pin<Rc<T>>
where T: ?Sized + DeepClone<MaybeSlow>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T> DeepClone<MaybeSlow> for Pin<Arc<T>>
where T: ?Sized + DeepClone<MaybeSlow>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T, S> DeepClone<MaybeSlow> for HashSet<T, S>

Available on crate feature std only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<T, const N: usize> DeepClone<Fast> for [T; N]
where T: ?Sized + DeepClone<Fast>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T, const N: usize> DeepClone<MaybeSlow> for [T; N]
where T: ?Sized + DeepClone<MaybeSlow>,

Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<Fast>> DeepClone<Fast> for Option<T>

Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<Fast>> DeepClone<Fast> for RefCell<T>

Source§

fn deep_clone(&self) -> Self

§Panics

Panics if the value is currently mutably borrowed.

Source§

impl<T: DeepClone<Fast>> DeepClone<Fast> for ManuallyDrop<T>

Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<Fast>> DeepClone<Fast> for Mutex<T>

Source§

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>

Source§

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>

Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Option<T>

Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Box<[T]>

Available on crate feature alloc only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for LinkedList<T>

Available on crate feature alloc only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for VecDeque<T>

Available on crate feature alloc only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Vec<T>

Available on crate feature alloc only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for RefCell<T>

Source§

fn deep_clone(&self) -> Self

§Panics

Panics if the value is currently mutably borrowed.

Source§

impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for ManuallyDrop<T>

Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Pin<Box<[T]>>

Available on crate feature alloc only.
Source§

fn deep_clone(&self) -> Self

Source§

impl<T: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Mutex<T>

Source§

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>

Source§

fn deep_clone(&self) -> Self

§Panics

Panics if the RwLock is poisoned.

Source§

impl<T: DeepClone<MaybeSlow>, E: DeepClone<MaybeSlow>> DeepClone<MaybeSlow> for Result<T, E>

Source§

fn deep_clone(&self) -> Self

Implementors§