Clone in core::clone - Rust
Description: A common trait for the ability to explicitly duplicate an object.
Keywords: rust, rustlang, rust-lang, Clone

# Trait core::clone::Clone
1.0.0[−][src]

    pub trait Clone: Sized {
        #[must_use = "cloning is often expensive and is not expected to have side effects"]
        fn clone(&self) -> Self;

        fn clone_from(&mut self, source: &Self) { ... }
    }

Expand description

A common trait for the ability to explicitly duplicate an object.

Differs from `Copy` in that `Copy` is implicit and extremely inexpensive, while `Clone` is always explicit and may or may not be expensive. In order to enforce these characteristics, Rust does not allow you to reimplement `Copy`, but you may reimplement `Clone` and run arbitrary code.

Since `Clone` is more general than `Copy`, you can automatically make anything `Copy` be `Clone` as well.

## Derivable

This trait can be used with `#[derive]` if all fields are `Clone`. The `derive`d implementation of `Clone` calls `clone` on each field.

For a generic struct, `#[derive]` implements `Clone` conditionally by adding bound `Clone` on generic parameters.

    // `derive` implements Clone for Reading<T> when T is Clone.
    #[derive(Clone)]
    struct Reading<T> {
        frequency: T,
    }

Run

## How can I implement `Clone`?

Types that are `Copy` should have a trivial implementation of `Clone`. More formally: if `T: Copy`, `x: T`, and `y: &T`, then `let x = y.clone();` is equivalent to `let x = *y;`. Manual implementations should be careful to uphold this invariant; however, unsafe code must not rely on it to ensure memory safety.

An example is a generic struct holding a function pointer. In this case, the implementation of `Clone` cannot be `derive`d, but can be implemented as:

    struct Generate<T>(fn() -> T);

    impl<T> Copy for Generate<T> {}

    impl<T> Clone for Generate<T> {
        fn clone(&self) -> Self {
            *self
        }
    }

Run

## Additional implementors

In addition to the implementors listed below, the following types also implement `Clone`:

- Function item types (i.e., the distinct types defined for each function)
- Function pointer types (e.g., `fn() -> i32`)
- Array types, for all sizes, if the item type also implements `Clone` (e.g., `[i32; 123456]`)
- Tuple types, if each component also implements `Clone` (e.g., `()`, `(i32, bool)`)
- Closure types, if they capture no value from the environment or if all such captured values implement `Clone` themselves. Note that variables captured by shared reference always implement `Clone` (even if the referent doesn’t), while variables captured by mutable reference never implement `Clone`.

## Required methods

####
#[must_use = "cloning is often expensive and is not expected to have side effects"]
fn clone(&self) -> Self

[src]

Returns a copy of the value.

# Examples

    let hello = "Hello"; // &str implements Clone

    assert_eq!("Hello", hello.clone());

Run

## Provided methods

#### fn clone_from(&mut self, source: &Self)

[src]

Performs copy-assignment from `source`.

`a.clone_from(&b)` is equivalent to `a = b.clone()` in functionality, but can be overridden to reuse the resources of `a` to avoid unnecessary allocations.

## Implementors

### impl Clone for !

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for core::cmp::Ordering

[src]

#### fn clone(&self) -> Ordering

[src]

### impl Clone for Infallible

1.34.0[src]

#### fn clone(&self) -> Infallible

[src]

### impl Clone for FpCategory

[src]

#### fn clone(&self) -> FpCategory

[src]

### impl Clone for IntErrorKind

[src]

#### fn clone(&self) -> IntErrorKind

[src]

### impl Clone for SearchStep

[src]

#### fn clone(&self) -> SearchStep

[src]

### impl Clone for core::sync::atomic::Ordering

[src]

#### fn clone(&self) -> Ordering

[src]

### impl Clone for AllocError

[src]

#### fn clone(&self) -> AllocError

[src]

### impl Clone for Layout

1.28.0[src]

#### fn clone(&self) -> Layout

[src]

### impl Clone for LayoutError

1.50.0[src]

#### fn clone(&self) -> LayoutError

[src]

### impl Clone for TypeId

[src]

#### fn clone(&self) -> TypeId

[src]

### impl Clone for float64x1_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> float64x1_t

[src]

### impl Clone for float64x2_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> float64x2_t

[src]

### impl Clone for int8x16x2_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> int8x16x2_t

[src]

### impl Clone for int8x16x3_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> int8x16x3_t

[src]

### impl Clone for int8x16x4_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> int8x16x4_t

[src]

### impl Clone for poly8x16x2_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> poly8x16x2_t

[src]

### impl Clone for poly8x16x3_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> poly8x16x3_t

[src]

### impl Clone for poly8x16x4_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> poly8x16x4_t

[src]

### impl Clone for uint8x16x2_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> uint8x16x2_t

[src]

### impl Clone for uint8x16x3_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> uint8x16x3_t

[src]

### impl Clone for uint8x16x4_t

[src]
This is supported on AArch64 only.

#### fn clone(&self) -> uint8x16x4_t

[src]

### impl Clone for int16x2_t

[src]
This is supported on ARM only.

#### fn clone(&self) -> int16x2_t

[src]

### impl Clone for uint16x2_t

[src]
This is supported on ARM only.

#### fn clone(&self) -> uint16x2_t

[src]

### impl Clone for float32x2_t

[src]

#### fn clone(&self) -> float32x2_t

[src]

### impl Clone for float32x4_t

[src]

#### fn clone(&self) -> float32x4_t

[src]

### impl Clone for int8x4_t

[src]
This is supported on ARM only.

#### fn clone(&self) -> int8x4_t

[src]

### impl Clone for int8x8_t

[src]

#### fn clone(&self) -> int8x8_t

[src]

### impl Clone for int8x8x2_t

[src]

#### fn clone(&self) -> int8x8x2_t

[src]

### impl Clone for int8x8x3_t

[src]

#### fn clone(&self) -> int8x8x3_t

[src]

### impl Clone for int8x8x4_t

[src]

#### fn clone(&self) -> int8x8x4_t

[src]

### impl Clone for int8x16_t

[src]

#### fn clone(&self) -> int8x16_t

[src]

### impl Clone for int16x4_t

[src]

#### fn clone(&self) -> int16x4_t

[src]

### impl Clone for int16x8_t

[src]

#### fn clone(&self) -> int16x8_t

[src]

### impl Clone for int32x2_t

[src]

#### fn clone(&self) -> int32x2_t

[src]

### impl Clone for int32x4_t

[src]

#### fn clone(&self) -> int32x4_t

[src]

### impl Clone for int64x1_t

[src]

#### fn clone(&self) -> int64x1_t

[src]

### impl Clone for int64x2_t

[src]

#### fn clone(&self) -> int64x2_t

[src]

### impl Clone for poly8x8_t

[src]

#### fn clone(&self) -> poly8x8_t

[src]

### impl Clone for poly8x8x2_t

[src]

#### fn clone(&self) -> poly8x8x2_t

[src]

### impl Clone for poly8x8x3_t

[src]

#### fn clone(&self) -> poly8x8x3_t

[src]

### impl Clone for poly8x8x4_t

[src]

#### fn clone(&self) -> poly8x8x4_t

[src]

### impl Clone for poly8x16_t

[src]

#### fn clone(&self) -> poly8x16_t

[src]

### impl Clone for poly16x4_t

[src]

#### fn clone(&self) -> poly16x4_t

[src]

### impl Clone for poly16x8_t

[src]

#### fn clone(&self) -> poly16x8_t

[src]

### impl Clone for poly64x1_t

[src]

#### fn clone(&self) -> poly64x1_t

[src]

### impl Clone for poly64x2_t

[src]

#### fn clone(&self) -> poly64x2_t

[src]

### impl Clone for uint8x4_t

[src]
This is supported on ARM only.

#### fn clone(&self) -> uint8x4_t

[src]

### impl Clone for uint8x8_t

[src]

#### fn clone(&self) -> uint8x8_t

[src]

### impl Clone for uint8x8x2_t

[src]

#### fn clone(&self) -> uint8x8x2_t

[src]

### impl Clone for uint8x8x3_t

[src]

#### fn clone(&self) -> uint8x8x3_t

[src]

### impl Clone for uint8x8x4_t

[src]

#### fn clone(&self) -> uint8x8x4_t

[src]

### impl Clone for uint8x16_t

[src]

#### fn clone(&self) -> uint8x16_t

[src]

### impl Clone for uint16x4_t

[src]

#### fn clone(&self) -> uint16x4_t

[src]

### impl Clone for uint16x8_t

[src]

#### fn clone(&self) -> uint16x8_t

[src]

### impl Clone for uint32x2_t

[src]

#### fn clone(&self) -> uint32x2_t

[src]

### impl Clone for uint32x4_t

[src]

#### fn clone(&self) -> uint32x4_t

[src]

### impl Clone for uint64x1_t

[src]

#### fn clone(&self) -> uint64x1_t

[src]

### impl Clone for uint64x2_t

[src]

#### fn clone(&self) -> uint64x2_t

[src]

### impl Clone for vector_bool_long

[src]
This is supported on PowerPC or PowerPC-64 only.

#### fn clone(&self) -> vector_bool_long

[src]

### impl Clone for vector_double

[src]
This is supported on PowerPC or PowerPC-64 only.

#### fn clone(&self) -> vector_double

[src]

### impl Clone for vector_signed_long

[src]
This is supported on PowerPC or PowerPC-64 only.

#### fn clone(&self) -> vector_signed_long

[src]

### impl Clone for vector_unsigned_long

[src]
This is supported on PowerPC or PowerPC-64 only.

#### fn clone(&self) -> vector_unsigned_long

[src]

### impl Clone for v128

1.54.0[src]
This is supported on WebAssembly only.

#### fn clone(&self) -> v128

[src]

### impl Clone for CpuidResult

1.27.0[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> CpuidResult

[src]

### impl Clone for __m128

1.27.0[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m128

[src]

### impl Clone for __m128bh

[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m128bh

[src]

### impl Clone for __m128d

1.27.0[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m128d

[src]

### impl Clone for __m128i

1.27.0[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m128i

[src]

### impl Clone for __m256

1.27.0[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m256

[src]

### impl Clone for __m256bh

[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m256bh

[src]

### impl Clone for __m256d

1.27.0[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m256d

[src]

### impl Clone for __m256i

1.27.0[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m256i

[src]

### impl Clone for __m512

[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m512

[src]

### impl Clone for __m512bh

[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m512bh

[src]

### impl Clone for __m512d

[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m512d

[src]

### impl Clone for __m512i

[src]
This is supported on x86 or x86-64 only.

#### fn clone(&self) -> __m512i

[src]

### impl Clone for TryFromSliceError

1.34.0[src]

#### fn clone(&self) -> TryFromSliceError

[src]

### impl Clone for core::ascii::EscapeDefault

[src]

#### fn clone(&self) -> EscapeDefaultⓘ
Notable traits for EscapeDefault
`impl Iterator for EscapeDefault type Item = u8;`

[src]

### impl Clone for CharTryFromError

1.34.0[src]

#### fn clone(&self) -> CharTryFromError

[src]

### impl Clone for DecodeUtf16Error

1.9.0[src]

#### fn clone(&self) -> DecodeUtf16Error

[src]

### impl Clone for core::char::EscapeDebug

1.20.0[src]

#### fn clone(&self) -> EscapeDebugⓘ
Notable traits for EscapeDebug
`impl Iterator for EscapeDebug type Item = char;`

[src]

### impl Clone for core::char::EscapeDefault

[src]

#### fn clone(&self) -> EscapeDefaultⓘ
Notable traits for EscapeDefault
`impl Iterator for EscapeDefault type Item = char;`

[src]

### impl Clone for core::char::EscapeUnicode

[src]

#### fn clone(&self) -> EscapeUnicodeⓘ
Notable traits for EscapeUnicode
`impl Iterator for EscapeUnicode type Item = char;`

[src]

### impl Clone for ParseCharError

1.20.0[src]

#### fn clone(&self) -> ParseCharError

[src]

### impl Clone for ToLowercase

[src]

#### fn clone(&self) -> ToLowercaseⓘ
Notable traits for ToLowercase
`impl Iterator for ToLowercase type Item = char;`

[src]

### impl Clone for ToUppercase

[src]

#### fn clone(&self) -> ToUppercaseⓘ
Notable traits for ToUppercase
`impl Iterator for ToUppercase type Item = char;`

[src]

### impl Clone for Error

[src]

#### fn clone(&self) -> Error

[src]

### impl Clone for SipHasher

[src]

#### fn clone(&self) -> SipHasher

[src]

### impl Clone for PhantomPinned

1.33.0[src]

#### fn clone(&self) -> PhantomPinned

[src]

### impl Clone for NonZeroI8

1.34.0[src]

#### fn clone(&self) -> NonZeroI8

[src]

### impl Clone for NonZeroI16

1.34.0[src]

#### fn clone(&self) -> NonZeroI16

[src]

### impl Clone for NonZeroI32

1.34.0[src]

#### fn clone(&self) -> NonZeroI32

[src]

### impl Clone for NonZeroI64

1.34.0[src]

#### fn clone(&self) -> NonZeroI64

[src]

### impl Clone for NonZeroI128

1.34.0[src]

#### fn clone(&self) -> NonZeroI128

[src]

### impl Clone for NonZeroIsize

1.34.0[src]

#### fn clone(&self) -> NonZeroIsize

[src]

### impl Clone for NonZeroU8

1.28.0[src]

#### fn clone(&self) -> NonZeroU8

[src]

### impl Clone for NonZeroU16

1.28.0[src]

#### fn clone(&self) -> NonZeroU16

[src]

### impl Clone for NonZeroU32

1.28.0[src]

#### fn clone(&self) -> NonZeroU32

[src]

### impl Clone for NonZeroU64

1.28.0[src]

#### fn clone(&self) -> NonZeroU64

[src]

### impl Clone for NonZeroU128

1.28.0[src]

#### fn clone(&self) -> NonZeroU128

[src]

### impl Clone for NonZeroUsize

1.28.0[src]

#### fn clone(&self) -> NonZeroUsize

[src]

### impl Clone for ParseFloatError

[src]

#### fn clone(&self) -> ParseFloatError

[src]

### impl Clone for ParseIntError

[src]

#### fn clone(&self) -> ParseIntError

[src]

### impl Clone for TryFromIntError

1.34.0[src]

#### fn clone(&self) -> TryFromIntError

[src]

### impl Clone for RangeFull

[src]

#### fn clone(&self) -> RangeFull

[src]

### impl Clone for TraitObject

[src]

#### fn clone(&self) -> TraitObject

[src]

### impl Clone for ParseBoolError

[src]

#### fn clone(&self) -> ParseBoolError

[src]

### impl Clone for Utf8Error

[src]

#### fn clone(&self) -> Utf8Error

[src]

### impl Clone for RawWakerVTable

1.36.0[src]

#### fn clone(&self) -> RawWakerVTable

[src]

### impl Clone for Waker

1.36.0[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for Duration

1.3.0[src]

#### fn clone(&self) -> Duration

[src]

### impl Clone for bool

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for char

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for f32

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for f64

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for i8

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for i16

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for i32

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for i64

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for i128

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for isize

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for u8

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for u16

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for u32

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for u64

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for u128

[src]

#### fn clone(&self) -> Self

[src]

### impl Clone for usize

[src]

#### fn clone(&self) -> Self

[src]

### impl<'a> Clone for Arguments<'a>

[src]

#### fn clone(&self) -> Arguments<'a>

[src]

### impl<'a> Clone for Location<'a>

1.10.0[src]

#### fn clone(&self) -> Location<'a>

[src]

### impl<'a> Clone for EscapeAscii<'a>

[src]

#### fn clone(&self) -> EscapeAscii<'a>ⓘ
Notable traits for EscapeAscii<'a>
`impl<'a> Iterator for EscapeAscii<'a> type Item = u8;`

[src]

### impl<'a> Clone for CharSearcher<'a>

[src]

#### fn clone(&self) -> CharSearcher<'a>

[src]

### impl<'a> Clone for Bytes<'a>

[src]

#### fn clone(&self) -> Bytes<'a>ⓘ
Notable traits for Bytes<'_>
`impl Iterator for Bytes<'_> type Item = u8;`

[src]

### impl<'a> Clone for CharIndices<'a>

[src]

#### fn clone(&self) -> CharIndices<'a>ⓘ
Notable traits for CharIndices<'a>
`impl<'a> Iterator for CharIndices<'a> type Item = (usize, char);`

[src]

### impl<'a> Clone for Chars<'a>

[src]

#### fn clone(&self) -> Chars<'a>ⓘ
Notable traits for Chars<'a>
`impl<'a> Iterator for Chars<'a> type Item = char;`

[src]

### impl<'a> Clone for EncodeUtf16<'a>

1.8.0[src]

#### fn clone(&self) -> EncodeUtf16<'a>ⓘ
Notable traits for EncodeUtf16<'a>
`impl<'a> Iterator for EncodeUtf16<'a> type Item = u16;`

[src]

### impl<'a> Clone for core::str::EscapeDebug<'a>

1.34.0[src]

#### fn clone(&self) -> EscapeDebug<'a>ⓘ
Notable traits for EscapeDebug<'a>
`impl<'a> Iterator for EscapeDebug<'a> type Item = char;`

[src]

### impl<'a> Clone for core::str::EscapeDefault<'a>

1.34.0[src]

#### fn clone(&self) -> EscapeDefault<'a>ⓘ
Notable traits for EscapeDefault<'a>
`impl<'a> Iterator for EscapeDefault<'a> type Item = char;`

[src]

### impl<'a> Clone for core::str::EscapeUnicode<'a>

1.34.0[src]

#### fn clone(&self) -> EscapeUnicode<'a>ⓘ
Notable traits for EscapeUnicode<'a>
`impl<'a> Iterator for EscapeUnicode<'a> type Item = char;`

[src]

### impl<'a> Clone for Lines<'a>

[src]

#### fn clone(&self) -> Lines<'a>ⓘ
Notable traits for Lines<'a>
`impl<'a> Iterator for Lines<'a> type Item = &'a str;`

[src]

### impl<'a> Clone for LinesAny<'a>

[src]

#### fn clone(&self) -> LinesAny<'a>ⓘ
Notable traits for LinesAny<'a>
`impl<'a> Iterator for LinesAny<'a> type Item = &'a str;`

[src]

### impl<'a> Clone for SplitAsciiWhitespace<'a>

1.34.0[src]

#### fn clone(&self) -> SplitAsciiWhitespace<'a>ⓘ
Notable traits for SplitAsciiWhitespace<'a>
`impl<'a> Iterator for SplitAsciiWhitespace<'a> type Item = &'a str;`

[src]

### impl<'a> Clone for SplitWhitespace<'a>

1.1.0[src]

#### fn clone(&self) -> SplitWhitespace<'a>ⓘ
Notable traits for SplitWhitespace<'a>
`impl<'a> Iterator for SplitWhitespace<'a> type Item = &'a str;`

[src]

### impl<'a, 'b> Clone for CharSliceSearcher<'a, 'b>

[src]

#### fn clone(&self) -> CharSliceSearcher<'a, 'b>

[src]

### impl<'a, 'b> Clone for StrSearcher<'a, 'b>

[src]

#### fn clone(&self) -> StrSearcher<'a, 'b>

[src]

### impl<'a, F: Clone> Clone for CharPredicateSearcher<'a, F> where
F: FnMut(char) -> bool,

[src]

#### fn clone(&self) -> CharPredicateSearcher<'a, F>

[src]

### impl<'a, P> Clone for MatchIndices<'a, P> where
P: Pattern<'a, Searcher: Clone>,

1.5.0[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P> Clone for Matches<'a, P> where
P: Pattern<'a, Searcher: Clone>,

1.2.0[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P> Clone for RMatchIndices<'a, P> where
P: Pattern<'a, Searcher: Clone>,

1.5.0[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P> Clone for RMatches<'a, P> where
P: Pattern<'a, Searcher: Clone>,

1.2.0[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P> Clone for core::str::RSplit<'a, P> where
P: Pattern<'a, Searcher: Clone>,

[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P> Clone for RSplitN<'a, P> where
P: Pattern<'a, Searcher: Clone>,

[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P> Clone for RSplitTerminator<'a, P> where
P: Pattern<'a, Searcher: Clone>,

[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P> Clone for core::str::Split<'a, P> where
P: Pattern<'a, Searcher: Clone>,

[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P> Clone for SplitN<'a, P> where
P: Pattern<'a, Searcher: Clone>,

[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P> Clone for SplitTerminator<'a, P> where
P: Pattern<'a, Searcher: Clone>,

[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, P: Pattern<'a, Searcher: Clone>> Clone for core::str::SplitInclusive<'a, P>

1.51.0[src]

#### fn clone(&self) -> Self

[src]

### impl<'a, T> Clone for RChunksExact<'a, T>

1.31.0[src]

#### fn clone(&self) -> RChunksExact<'a, T>ⓘ
Notable traits for RChunksExact<'a, T>
`impl<'a, T> Iterator for RChunksExact<'a, T> type Item = &'a [T];`

[src]

### impl<'a, T: Clone + 'a, P: Clone> Clone for core::slice::RSplit<'a, T, P> where
P: FnMut(&T) -> bool,

1.27.0[src]

#### fn clone(&self) -> RSplit<'a, T, P>ⓘ
Notable traits for RSplit<'a, T, P>
`impl<'a, T, P> Iterator for RSplit<'a, T, P> where
P: FnMut(&T) -> bool, type Item = &'a [T];`

[src]

### impl<'a, T: Clone + 'a, const N: usize> Clone for ArrayWindows<'a, T, N>

[src]

#### fn clone(&self) -> ArrayWindows<'a, T, N>ⓘ
Notable traits for ArrayWindows<'a, T, N>
`impl<'a, T, const N: usize> Iterator for ArrayWindows<'a, T, N> type Item = &'a [T; N];`

[src]

### impl<'f> Clone for VaListImpl<'f>

[src]

#### fn clone(&self) -> Self

[src]

### impl<A> Clone for core::option::Iter<'_, A>

[src]

#### fn clone(&self) -> Self

[src]

### impl<A: Clone> Clone for Repeat<A>

[src]

#### fn clone(&self) -> Repeat<A>ⓘ
Notable traits for Repeat<A>
`impl<A: Clone> Iterator for Repeat<A> type Item = A;`

[src]

### impl<A: Clone> Clone for core::option::IntoIter<A>

[src]

#### fn clone(&self) -> IntoIter<A>ⓘ
Notable traits for IntoIter<A>
`impl<A> Iterator for IntoIter<A> type Item = A;`

[src]

### impl<A: Clone, B: Clone> Clone for Chain<A, B>

[src]

#### fn clone(&self) -> Chain<A, B>ⓘ
Notable traits for Chain<A, B>
`impl<A, B> Iterator for Chain<A, B> where
A: Iterator,
B: Iterator<Item = A::Item>, type Item = A::Item;`

[src]

### impl<A: Clone, B: Clone> Clone for Zip<A, B>

[src]

#### fn clone(&self) -> Zip<A, B>ⓘ
Notable traits for Zip<A, B>
`impl<A, B> Iterator for Zip<A, B> where
A: Iterator,
B: Iterator, type Item = (A::Item, B::Item);`

[src]

### impl<B: Clone, C: Clone> Clone for ControlFlow<B, C>

[src]

#### fn clone(&self) -> ControlFlow<B, C>

[src]

### impl<Dyn: ?Sized> Clone for DynMetadata<Dyn>

[src]

#### fn clone(&self) -> Self

[src]

### impl<F: Clone> Clone for FromFn<F>

1.34.0[src]

#### fn clone(&self) -> FromFn<F>ⓘ
Notable traits for FromFn<F>
`impl<T, F> Iterator for FromFn<F> where
F: FnMut() -> Option<T>, type Item = T;`

[src]

### impl<F: Clone> Clone for OnceWith<F>

1.43.0[src]

#### fn clone(&self) -> OnceWith<F>ⓘ
Notable traits for OnceWith<F>
`impl<A, F: FnOnce() -> A> Iterator for OnceWith<F> type Item = A;`

[src]

### impl<F: Clone> Clone for RepeatWith<F>

1.28.0[src]

#### fn clone(&self) -> RepeatWith<F>ⓘ
Notable traits for RepeatWith<F>
`impl<A, F: FnMut() -> A> Iterator for RepeatWith<F> type Item = A;`

[src]

### impl<H> Clone for BuildHasherDefault<H>

1.7.0[src]

#### fn clone(&self) -> BuildHasherDefault<H>

[src]

### impl<I, G> Clone for IntersperseWith<I, G> where
I: Iterator + Clone,
I::Item: Clone,
G: Clone,

[src]

#### fn clone(&self) -> Self

[src]

### impl<I, U> Clone for Flatten<I> where
I: Clone + Iterator<Item: IntoIterator<IntoIter = U, Item = U::Item>>,
U: Clone + Iterator,

1.29.0[src]

#### fn clone(&self) -> Self

[src]

### impl<I: Clone + Iterator> Clone for Intersperse<I> where
I::Item: Clone,
I::Item: Clone,

[src]

#### fn clone(&self) -> Intersperse<I>ⓘ
Notable traits for Intersperse<I>
`impl<I> Iterator for Intersperse<I> where
I: Iterator,
I::Item: Clone, type Item = I::Item;`

[src]

### impl<I: Clone + Iterator> Clone for Peekable<I> where
I::Item: Clone,

[src]

#### fn clone(&self) -> Peekable<I>ⓘ
Notable traits for Peekable<I>
`impl<I: Iterator> Iterator for Peekable<I> type Item = I::Item;`

[src]

### impl<I: Clone> Clone for DecodeUtf16<I> where
I: Iterator<Item = u16>,

1.9.0[src]

#### fn clone(&self) -> DecodeUtf16<I>ⓘ
Notable traits for DecodeUtf16<I>
`impl<I: Iterator<Item = u16>> Iterator for DecodeUtf16<I> type Item = Result<char, DecodeUtf16Error>;`

[src]

### impl<I: Clone> Clone for Cloned<I>

1.1.0[src]

#### fn clone(&self) -> Cloned<I>ⓘ
Notable traits for Cloned<I>
`impl<'a, I, T: 'a> Iterator for Cloned<I> where
I: Iterator<Item = &'a T>,
T: Clone, type Item = T;`

[src]

### impl<I: Clone> Clone for Copied<I>

1.36.0[src]

#### fn clone(&self) -> Copied<I>ⓘ
Notable traits for Copied<I>
`impl<'a, I, T: 'a> Iterator for Copied<I> where
I: Iterator<Item = &'a T>,
T: Copy, type Item = T;`

[src]

### impl<I: Clone> Clone for Cycle<I>

[src]

#### fn clone(&self) -> Cycle<I>ⓘ
Notable traits for Cycle<I>
`impl<I> Iterator for Cycle<I> where
I: Clone + Iterator, type Item = <I as Iterator>::Item;`

[src]

### impl<I: Clone> Clone for Enumerate<I>

[src]

#### fn clone(&self) -> Enumerate<I>ⓘ
Notable traits for Enumerate<I>
`impl<I> Iterator for Enumerate<I> where
I: Iterator, type Item = (usize, <I as Iterator>::Item);`

[src]

### impl<I: Clone> Clone for Fuse<I>

[src]

#### fn clone(&self) -> Fuse<I>ⓘ
Notable traits for Fuse<I>
`impl<I> Iterator for Fuse<I> where
I: Iterator, type Item = <I as Iterator>::Item;`

[src]

### impl<I: Clone> Clone for Skip<I>

[src]

#### fn clone(&self) -> Skip<I>ⓘ
Notable traits for Skip<I>
`impl<I> Iterator for Skip<I> where
I: Iterator, type Item = <I as Iterator>::Item;`

[src]

### impl<I: Clone> Clone for StepBy<I>

1.28.0[src]

#### fn clone(&self) -> StepBy<I>ⓘ
Notable traits for StepBy<I>
`impl<I> Iterator for StepBy<I> where
I: Iterator, type Item = I::Item;`

[src]

### impl<I: Clone> Clone for Take<I>

[src]

#### fn clone(&self) -> Take<I>ⓘ
Notable traits for Take<I>
`impl<I> Iterator for Take<I> where
I: Iterator, type Item = <I as Iterator>::Item;`

[src]

### impl<I: Clone, F: Clone> Clone for FilterMap<I, F>

[src]

#### fn clone(&self) -> FilterMap<I, F>ⓘ
Notable traits for FilterMap<I, F>
`impl<B, I: Iterator, F> Iterator for FilterMap<I, F> where
F: FnMut(I::Item) -> Option<B>, type Item = B;`

[src]

### impl<I: Clone, F: Clone> Clone for Inspect<I, F>

[src]

#### fn clone(&self) -> Inspect<I, F>ⓘ
Notable traits for Inspect<I, F>
`impl<I: Iterator, F> Iterator for Inspect<I, F> where
F: FnMut(&I::Item), type Item = I::Item;`

[src]

### impl<I: Clone, F: Clone> Clone for Map<I, F>

[src]

#### fn clone(&self) -> Map<I, F>ⓘ
Notable traits for Map<I, F>
`impl<B, I: Iterator, F> Iterator for Map<I, F> where
F: FnMut(I::Item) -> B, type Item = B;`

[src]

### impl<I: Clone, P: Clone> Clone for Filter<I, P>

[src]

#### fn clone(&self) -> Filter<I, P>ⓘ
Notable traits for Filter<I, P>
`impl<I: Iterator, P> Iterator for Filter<I, P> where
P: FnMut(&I::Item) -> bool, type Item = I::Item;`

[src]

### impl<I: Clone, P: Clone> Clone for MapWhile<I, P>

[src]

#### fn clone(&self) -> MapWhile<I, P>ⓘ
Notable traits for MapWhile<I, P>
`impl<B, I: Iterator, P> Iterator for MapWhile<I, P> where
P: FnMut(I::Item) -> Option<B>, type Item = B;`

[src]

### impl<I: Clone, P: Clone> Clone for SkipWhile<I, P>

[src]

#### fn clone(&self) -> SkipWhile<I, P>ⓘ
Notable traits for SkipWhile<I, P>
`impl<I: Iterator, P> Iterator for SkipWhile<I, P> where
P: FnMut(&I::Item) -> bool, type Item = I::Item;`

[src]

### impl<I: Clone, P: Clone> Clone for TakeWhile<I, P>

[src]

#### fn clone(&self) -> TakeWhile<I, P>ⓘ
Notable traits for TakeWhile<I, P>
`impl<I: Iterator, P> Iterator for TakeWhile<I, P> where
P: FnMut(&I::Item) -> bool, type Item = I::Item;`

[src]

### impl<I: Clone, St: Clone, F: Clone> Clone for Scan<I, St, F>

[src]

#### fn clone(&self) -> Scan<I, St, F>ⓘ
Notable traits for Scan<I, St, F>
`impl<B, I, St, F> Iterator for Scan<I, St, F> where
I: Iterator,
F: FnMut(&mut St, I::Item) -> Option<B>, type Item = B;`

[src]

### impl<I: Clone, U, F: Clone> Clone for FlatMap<I, U, F> where
U: Clone + IntoIterator<IntoIter: Clone>,

[src]

#### fn clone(&self) -> Self

[src]

### impl<Idx: Clone> Clone for Range<Idx>

[src]

#### fn clone(&self) -> Range<Idx>ⓘ
Notable traits for Range<A>
`impl<A: Step> Iterator for Range<A> type Item = A;`

[src]

### impl<Idx: Clone> Clone for RangeFrom<Idx>

[src]

#### fn clone(&self) -> RangeFrom<Idx>ⓘ
Notable traits for RangeFrom<A>
`impl<A: Step> Iterator for RangeFrom<A> type Item = A;`

[src]

### impl<Idx: Clone> Clone for RangeInclusive<Idx>

1.26.0[src]

#### fn clone(&self) -> RangeInclusive<Idx>ⓘ
Notable traits for RangeInclusive<A>
`impl<A: Step> Iterator for RangeInclusive<A> type Item = A;`

[src]

### impl<Idx: Clone> Clone for RangeTo<Idx>

[src]

#### fn clone(&self) -> RangeTo<Idx>

[src]

### impl<Idx: Clone> Clone for RangeToInclusive<Idx>

1.26.0[src]

#### fn clone(&self) -> RangeToInclusive<Idx>

[src]

### impl<P: Clone> Clone for Pin<P>

1.33.0[src]

#### fn clone(&self) -> Pin<P>ⓘ
Notable traits for Pin<P>
`impl<P> Future for Pin<P> where
P: Unpin + DerefMut<Target: Future>, type Output = <<P as Deref>::Target as Future>::Output;`

[src]

### impl<T> Clone for Pending<T>

1.48.0[src]

#### fn clone(&self) -> Self

[src]

### impl<T> Clone for Empty<T>

1.2.0[src]

#### fn clone(&self) -> Empty<T>ⓘ
Notable traits for Empty<T>
`impl<T> Iterator for Empty<T> type Item = T;`

[src]

### impl<T> Clone for Discriminant<T>

1.21.0[src]

#### fn clone(&self) -> Self

[src]

### impl<T> Clone for core::result::Iter<'_, T>

[src]

#### fn clone(&self) -> Self

[src]

### impl<T> Clone for Chunks<'_, T>

[src]

#### fn clone(&self) -> Self

[src]

### impl<T> Clone for ChunksExact<'_, T>

1.31.0[src]

#### fn clone(&self) -> Self

[src]

### impl<T> Clone for core::slice::Iter<'_, T>

[src]

#### fn clone(&self) -> Self

[src]

### impl<T> Clone for RChunks<'_, T>

1.31.0[src]

#### fn clone(&self) -> Self

[src]

### impl<T> Clone for Windows<'_, T>

[src]

#### fn clone(&self) -> Self

[src]

### impl<T, P> Clone for core::slice::Split<'_, T, P> where
P: Clone + FnMut(&T) -> bool,

[src]

#### fn clone(&self) -> Self

[src]

### impl<T, P> Clone for core::slice::SplitInclusive<'_, T, P> where
P: Clone + FnMut(&T) -> bool,

1.51.0[src]

#### fn clone(&self) -> Self

[src]

### impl<T, const N: usize> Clone for ArrayChunks<'_, T, N>

[src]

#### fn clone(&self) -> Self

[src]

### impl<T: Copy> Clone for Cell<T>

[src]

#### fn clone(&self) -> Cell<T>

[src]

### impl<T: Copy> Clone for MaybeUninit<T>

1.36.0[src]

#### fn clone(&self) -> Self

[src]

### impl<T: Clone + ?Sized> Clone for ManuallyDrop<T>

1.20.0[src]

#### fn clone(&self) -> ManuallyDrop<T>

[src]

### impl<T: Clone> Clone for Bound<T>

1.17.0[src]

#### fn clone(&self) -> Bound<T>

[src]

### impl<T: Clone> Clone for Option<T>

[src]

#### fn clone(&self) -> Self

[src]

#### fn clone_from(&mut self, source: &Self)

[src]

### impl<T: Clone> Clone for Poll<T>

1.36.0[src]

#### fn clone(&self) -> Poll<T>

[src]

### impl<T: Clone> Clone for RefCell<T>

[src]

#### fn clone(&self) -> RefCell<T>

[src]

# Panics

Panics if the value is currently mutably borrowed.

#### fn clone_from(&mut self, other: &Self)

[src]

# Panics

Panics if `other` is currently mutably borrowed.

### impl<T: Clone> Clone for Reverse<T>

1.19.0[src]

#### fn clone(&self) -> Reverse<T>

[src]

#### fn clone_from(&mut self, other: &Self)

[src]

### impl<T: Clone> Clone for Ready<T>

1.48.0[src]

#### fn clone(&self) -> Ready<T>ⓘ
Notable traits for Ready<T>
`impl<T> Future for Ready<T> type Output = T;`

[src]

### impl<T: Clone> Clone for Once<T>

1.2.0[src]

#### fn clone(&self) -> Once<T>ⓘ
Notable traits for Once<T>
`impl<T> Iterator for Once<T> type Item = T;`

[src]

### impl<T: Clone> Clone for Rev<T>

[src]

#### fn clone(&self) -> Rev<T>ⓘ
Notable traits for Rev<I>
`impl<I> Iterator for Rev<I> where
I: DoubleEndedIterator, type Item = <I as Iterator>::Item;`

[src]

### impl<T: Clone> Clone for OnceCell<T>

[src]

#### fn clone(&self) -> OnceCell<T>

[src]

### impl<T: Clone> Clone for Wrapping<T>

[src]

#### fn clone(&self) -> Wrapping<T>

[src]

### impl<T: Clone> Clone for core::result::IntoIter<T>

[src]

#### fn clone(&self) -> IntoIter<T>ⓘ
Notable traits for IntoIter<T>
`impl<T> Iterator for IntoIter<T> type Item = T;`

[src]

### impl<T: Clone, E: Clone> Clone for Result<T, E>

[src]

#### fn clone(&self) -> Self

[src]

#### fn clone_from(&mut self, source: &Self)

[src]

### impl<T: Clone, F: Clone> Clone for Successors<T, F>

1.34.0[src]

#### fn clone(&self) -> Successors<T, F>ⓘ
Notable traits for Successors<T, F>
`impl<T, F> Iterator for Successors<T, F> where
F: FnMut(&T) -> Option<T>, type Item = T;`

[src]

### impl<T: Clone, const N: usize> Clone for core::array::IntoIter<T, N>

1.40.0[src]

#### fn clone(&self) -> Self

[src]

### impl<T: ?Sized> !Clone for &mut T

[src]

Shared references can be cloned, but mutable references cannot!

### impl<T: ?Sized> Clone for &T

[src]

Shared references can be cloned, but mutable references cannot!

#### fn clone(&self) -> Self

[src]

### impl<T: ?Sized> Clone for *const T

[src]

#### fn clone(&self) -> Self

[src]

### impl<T: ?Sized> Clone for *mut T

[src]

#### fn clone(&self) -> Self

[src]

### impl<T: ?Sized> Clone for PhantomData<T>

[src]

#### fn clone(&self) -> Self

[src]

### impl<T: ?Sized> Clone for NonNull<T>

1.25.0[src]

#### fn clone(&self) -> Self

[src]

### impl<Y: Clone, R: Clone> Clone for GeneratorState<Y, R>

[src]

#### fn clone(&self) -> GeneratorState<Y, R>

[src]