Trait IndependentClone

Source
pub trait IndependentClone<S: Speed>: Sized {
    // Required method
    fn independent_clone(&self) -> Self;
}
Expand description

Get deep clones of a value, which do not share any semantically-important mutable state.

The goal is that the independent 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 independent clone.

Note also that an independent 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 independent 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 IndependentClone 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 independent_clone(&self) -> Self

Get a deep clone of a value, which does not share any semantically-important mutable state.

The goal is that the independent 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 independent clone.

Read IndependentClone 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 IndependentClone<AnySpeed> for Box<str>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<AnySpeed> for Pin<Box<str>>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for Ordering

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for Infallible

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for Ordering

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for bool

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for char

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for f32

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for f64

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for i8

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for i16

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for i32

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for i64

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for i128

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for isize

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for u8

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for u16

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for u32

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for u64

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for u128

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for ()

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for usize

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for Layout

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for TypeId

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for PhantomPinned

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<i8>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<i16>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<i32>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<i64>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<i128>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<isize>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<u8>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<u16>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<u32>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<u64>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<u128>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for NonZero<usize>

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for RangeFull

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicBool

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicI8

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicI16

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicI32

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicI64

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicIsize

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicU8

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicU16

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicU32

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicU64

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for AtomicUsize

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for Duration

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for ThreadId

Source§

fn independent_clone(&self) -> Self

Source§

impl IndependentClone<NearInstant> for Instant

Source§

fn independent_clone(&self) -> Self

Source§

impl<K, V> IndependentClone<AnySpeed> for BTreeMap<K, V>

Source§

fn independent_clone(&self) -> Self

Source§

impl<K, V, S> IndependentClone<AnySpeed> for HashMap<K, V, S>

Source§

fn independent_clone(&self) -> Self

Source§

impl<R> IndependentClone<NearInstant> for fn() -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1> IndependentClone<NearInstant> for fn(T1) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2> IndependentClone<NearInstant> for fn(T1, T2) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3> IndependentClone<NearInstant> for fn(T1, T2, T3) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3, T4> IndependentClone<NearInstant> for fn(T1, T2, T3, T4) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3, T4, T5> IndependentClone<NearInstant> for fn(T1, T2, T3, T4, T5) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3, T4, T5, T6> IndependentClone<NearInstant> for fn(T1, T2, T3, T4, T5, T6) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7> IndependentClone<NearInstant> for fn(T1, T2, T3, T4, T5, T6, T7) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8> IndependentClone<NearInstant> for fn(T1, T2, T3, T4, T5, T6, T7, T8) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9> IndependentClone<NearInstant> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> IndependentClone<NearInstant> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> IndependentClone<NearInstant> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> IndependentClone<NearInstant> for fn(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1,)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>, T4: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3, T4)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>, T4: IndependentClone<AnySpeed>, T5: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3, T4, T5)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>, T4: IndependentClone<AnySpeed>, T5: IndependentClone<AnySpeed>, T6: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3, T4, T5, T6)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>, T4: IndependentClone<AnySpeed>, T5: IndependentClone<AnySpeed>, T6: IndependentClone<AnySpeed>, T7: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3, T4, T5, T6, T7)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>, T4: IndependentClone<AnySpeed>, T5: IndependentClone<AnySpeed>, T6: IndependentClone<AnySpeed>, T7: IndependentClone<AnySpeed>, T8: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3, T4, T5, T6, T7, T8)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>, T4: IndependentClone<AnySpeed>, T5: IndependentClone<AnySpeed>, T6: IndependentClone<AnySpeed>, T7: IndependentClone<AnySpeed>, T8: IndependentClone<AnySpeed>, T9: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>, T4: IndependentClone<AnySpeed>, T5: IndependentClone<AnySpeed>, T6: IndependentClone<AnySpeed>, T7: IndependentClone<AnySpeed>, T8: IndependentClone<AnySpeed>, T9: IndependentClone<AnySpeed>, T10: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>, T4: IndependentClone<AnySpeed>, T5: IndependentClone<AnySpeed>, T6: IndependentClone<AnySpeed>, T7: IndependentClone<AnySpeed>, T8: IndependentClone<AnySpeed>, T9: IndependentClone<AnySpeed>, T10: IndependentClone<AnySpeed>, T11: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<AnySpeed>, T2: IndependentClone<AnySpeed>, T3: IndependentClone<AnySpeed>, T4: IndependentClone<AnySpeed>, T5: IndependentClone<AnySpeed>, T6: IndependentClone<AnySpeed>, T7: IndependentClone<AnySpeed>, T8: IndependentClone<AnySpeed>, T9: IndependentClone<AnySpeed>, T10: IndependentClone<AnySpeed>, T11: IndependentClone<AnySpeed>, T12: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1,)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>, T4: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3, T4)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>, T4: IndependentClone<ConstantTime>, T5: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3, T4, T5)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>, T4: IndependentClone<ConstantTime>, T5: IndependentClone<ConstantTime>, T6: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3, T4, T5, T6)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>, T4: IndependentClone<ConstantTime>, T5: IndependentClone<ConstantTime>, T6: IndependentClone<ConstantTime>, T7: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3, T4, T5, T6, T7)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>, T4: IndependentClone<ConstantTime>, T5: IndependentClone<ConstantTime>, T6: IndependentClone<ConstantTime>, T7: IndependentClone<ConstantTime>, T8: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3, T4, T5, T6, T7, T8)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>, T4: IndependentClone<ConstantTime>, T5: IndependentClone<ConstantTime>, T6: IndependentClone<ConstantTime>, T7: IndependentClone<ConstantTime>, T8: IndependentClone<ConstantTime>, T9: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>, T4: IndependentClone<ConstantTime>, T5: IndependentClone<ConstantTime>, T6: IndependentClone<ConstantTime>, T7: IndependentClone<ConstantTime>, T8: IndependentClone<ConstantTime>, T9: IndependentClone<ConstantTime>, T10: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>, T4: IndependentClone<ConstantTime>, T5: IndependentClone<ConstantTime>, T6: IndependentClone<ConstantTime>, T7: IndependentClone<ConstantTime>, T8: IndependentClone<ConstantTime>, T9: IndependentClone<ConstantTime>, T10: IndependentClone<ConstantTime>, T11: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<ConstantTime>, T2: IndependentClone<ConstantTime>, T3: IndependentClone<ConstantTime>, T4: IndependentClone<ConstantTime>, T5: IndependentClone<ConstantTime>, T6: IndependentClone<ConstantTime>, T7: IndependentClone<ConstantTime>, T8: IndependentClone<ConstantTime>, T9: IndependentClone<ConstantTime>, T10: IndependentClone<ConstantTime>, T11: IndependentClone<ConstantTime>, T12: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1,)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>, T4: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3, T4)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>, T4: IndependentClone<LogTime>, T5: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3, T4, T5)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>, T4: IndependentClone<LogTime>, T5: IndependentClone<LogTime>, T6: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3, T4, T5, T6)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>, T4: IndependentClone<LogTime>, T5: IndependentClone<LogTime>, T6: IndependentClone<LogTime>, T7: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3, T4, T5, T6, T7)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>, T4: IndependentClone<LogTime>, T5: IndependentClone<LogTime>, T6: IndependentClone<LogTime>, T7: IndependentClone<LogTime>, T8: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3, T4, T5, T6, T7, T8)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>, T4: IndependentClone<LogTime>, T5: IndependentClone<LogTime>, T6: IndependentClone<LogTime>, T7: IndependentClone<LogTime>, T8: IndependentClone<LogTime>, T9: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>, T4: IndependentClone<LogTime>, T5: IndependentClone<LogTime>, T6: IndependentClone<LogTime>, T7: IndependentClone<LogTime>, T8: IndependentClone<LogTime>, T9: IndependentClone<LogTime>, T10: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>, T4: IndependentClone<LogTime>, T5: IndependentClone<LogTime>, T6: IndependentClone<LogTime>, T7: IndependentClone<LogTime>, T8: IndependentClone<LogTime>, T9: IndependentClone<LogTime>, T10: IndependentClone<LogTime>, T11: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T1: IndependentClone<LogTime>, T2: IndependentClone<LogTime>, T3: IndependentClone<LogTime>, T4: IndependentClone<LogTime>, T5: IndependentClone<LogTime>, T6: IndependentClone<LogTime>, T7: IndependentClone<LogTime>, T8: IndependentClone<LogTime>, T9: IndependentClone<LogTime>, T10: IndependentClone<LogTime>, T11: IndependentClone<LogTime>, T12: IndependentClone<LogTime>> IndependentClone<LogTime> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<AnySpeed> for BinaryHeap<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<AnySpeed> for BTreeSet<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<AnySpeed> for Rc<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<AnySpeed> for Weak<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<AnySpeed> for Arc<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<AnySpeed> for Weak<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<AnySpeed> for Cell<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<AnySpeed> for Pin<Rc<T>>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<AnySpeed> for Pin<Arc<T>>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<ConstantTime> for Rc<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<ConstantTime> for Weak<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<ConstantTime> for Arc<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<ConstantTime> for Weak<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<ConstantTime> for Cell<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<ConstantTime> for Pin<Rc<T>>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<ConstantTime> for Pin<Arc<T>>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<LogTime> for Rc<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<LogTime> for Weak<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<LogTime> for Arc<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<LogTime> for Weak<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<LogTime> for Cell<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<LogTime> for Pin<Rc<T>>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<LogTime> for Pin<Arc<T>>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<NearInstant> for Empty<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T> IndependentClone<NearInstant> for Discriminant<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T, S> IndependentClone<AnySpeed> for HashSet<T, S>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T, const N: usize> IndependentClone<AnySpeed> for [T; N]

Source§

fn independent_clone(&self) -> Self

Source§

impl<T, const N: usize> IndependentClone<ConstantTime> for [T; N]

Source§

fn independent_clone(&self) -> Self

Source§

impl<T, const N: usize> IndependentClone<LogTime> for [T; N]

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for Option<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for Box<[T]>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for LinkedList<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for VecDeque<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for Vec<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for RefCell<T>

Source§

fn independent_clone(&self) -> Self

§Panics

Panics if the value is currently mutably borrowed.

Source§

impl<T: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for ManuallyDrop<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for Pin<Box<[T]>>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for Mutex<T>

Source§

fn independent_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: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for RwLock<T>

Source§

fn independent_clone(&self) -> Self

§Panics

Panics if the RwLock is poisoned.

Source§

impl<T: IndependentClone<AnySpeed>, E: IndependentClone<AnySpeed>> IndependentClone<AnySpeed> for Result<T, E>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for Option<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for RefCell<T>

Source§

fn independent_clone(&self) -> Self

§Panics

Panics if the value is currently mutably borrowed.

Source§

impl<T: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for ManuallyDrop<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for Mutex<T>

Source§

fn independent_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: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for RwLock<T>

Source§

fn independent_clone(&self) -> Self

§Panics

Panics if the RwLock is poisoned.

Source§

impl<T: IndependentClone<ConstantTime>, E: IndependentClone<ConstantTime>> IndependentClone<ConstantTime> for Result<T, E>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<LogTime>> IndependentClone<LogTime> for Option<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<LogTime>> IndependentClone<LogTime> for RefCell<T>

Source§

fn independent_clone(&self) -> Self

§Panics

Panics if the value is currently mutably borrowed.

Source§

impl<T: IndependentClone<LogTime>> IndependentClone<LogTime> for ManuallyDrop<T>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: IndependentClone<LogTime>> IndependentClone<LogTime> for Mutex<T>

Source§

fn independent_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: IndependentClone<LogTime>> IndependentClone<LogTime> for RwLock<T>

Source§

fn independent_clone(&self) -> Self

§Panics

Panics if the RwLock is poisoned.

Source§

impl<T: IndependentClone<LogTime>, E: IndependentClone<LogTime>> IndependentClone<LogTime> for Result<T, E>

Source§

fn independent_clone(&self) -> Self

Source§

impl<T: ?Sized> IndependentClone<NearInstant> for PhantomData<T>

Source§

fn independent_clone(&self) -> Self

Implementors§