Trait CheapClone

Source
pub trait CheapClone: Clone {
    // Provided method
    fn cheap_clone(&self) -> Self { ... }
}
Expand description

Things that are fast to clone in the context of an application.

The purpose of this API is to reduce the number of calls to .clone() which need to be audited for performance.

As a rule of thumb, only constant-time Clone impls should also implement CheapClone. Eg:

Provided Methods§

Source

fn cheap_clone(&self) -> Self

Returns a copy of the value.

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 CheapClone for &str

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for IpAddr

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for SocketAddr

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for bool

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for char

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for f32

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for f64

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for i8

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for i16

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for i32

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for i64

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for i128

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for isize

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for u8

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for u16

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for u32

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for u64

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for u128

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for ()

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for usize

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for Ipv4Addr

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for Ipv6Addr

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for SocketAddrV4

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for SocketAddrV6

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for Bytes

Available on crate feature bytes1 only.
Source§

impl CheapClone for FastStr

Available on crate feature faststr02 only.
Source§

impl CheapClone for SmolStr

Available on crate feature smol_str03 only.
Source§

impl CheapClone for SmolStr

Available on crate feature smol_str02 only.
Source§

impl CheapClone for NonZeroI8

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroI16

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroI32

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroI64

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroI128

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroIsize

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroU8

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroU16

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroU32

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroU64

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroU128

Source§

fn cheap_clone(&self) -> Self

Source§

impl CheapClone for NonZeroUsize

Source§

fn cheap_clone(&self) -> Self

Source§

impl<L: CheapClone, M: CheapClone, R: CheapClone> CheapClone for Among<L, M, R>

Source§

fn cheap_clone(&self) -> Self

Source§

impl<L: CheapClone, R: CheapClone> CheapClone for Either<L, R>

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone> CheapClone for (T0,)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone> CheapClone for (T0, T1)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone> CheapClone for (T0, T1, T2)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone> CheapClone for (T0, T1, T2, T3)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone> CheapClone for (T0, T1, T2, T3, T4)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

fn cheap_clone(&self) -> Self

Source§

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

Source§

fn cheap_clone(&self) -> Self

Source§

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

Source§

fn cheap_clone(&self) -> Self

Source§

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

Source§

fn cheap_clone(&self) -> Self

Source§

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

Source§

fn cheap_clone(&self) -> Self

Source§

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

Source§

fn cheap_clone(&self) -> Self

Source§

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

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone, T15: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone, T15: CheapClone, T16: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone, T15: CheapClone, T16: CheapClone, T17: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone, T15: CheapClone, T16: CheapClone, T17: CheapClone, T18: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone, T15: CheapClone, T16: CheapClone, T17: CheapClone, T18: CheapClone, T19: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone, T15: CheapClone, T16: CheapClone, T17: CheapClone, T18: CheapClone, T19: CheapClone, T20: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone, T15: CheapClone, T16: CheapClone, T17: CheapClone, T18: CheapClone, T19: CheapClone, T20: CheapClone, T21: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone, T15: CheapClone, T16: CheapClone, T17: CheapClone, T18: CheapClone, T19: CheapClone, T20: CheapClone, T21: CheapClone, T22: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T0: CheapClone, T1: CheapClone, T2: CheapClone, T3: CheapClone, T4: CheapClone, T5: CheapClone, T6: CheapClone, T7: CheapClone, T8: CheapClone, T9: CheapClone, T10: CheapClone, T11: CheapClone, T12: CheapClone, T13: CheapClone, T14: CheapClone, T15: CheapClone, T16: CheapClone, T17: CheapClone, T18: CheapClone, T19: CheapClone, T20: CheapClone, T21: CheapClone, T22: CheapClone, T23: CheapClone> CheapClone for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T> CheapClone for &T

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T> CheapClone for Arc<T>

Available on crate feature triomphe01 only.
Source§

impl<T: Copy, const N: usize> CheapClone for [T; N]

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T: CheapClone> CheapClone for Option<T>

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T: CheapClone> CheapClone for Reverse<T>

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T: CheapClone> CheapClone for Pin<T>

Source§

impl<T: CheapClone, E: CheapClone> CheapClone for Result<T, E>

Source§

fn cheap_clone(&self) -> Self

Source§

impl<T: ?Sized> CheapClone for Rc<T>

Source§

impl<T: ?Sized> CheapClone for Arc<T>

Implementors§