Trait std::clone::Clone
[−]
[src]
pub trait Clone {
fn clone(&self) -> Self;
fn clone_from(&mut self, source: &Self) { ... }
}A common trait for cloning an object.
This trait can be used with #[derive].
Required Methods
fn clone(&self) -> Self
Returns a copy of the value.
Examples
fn main() { let hello = "Hello"; // &str implements Clone assert_eq!("Hello", hello.clone()); }let hello = "Hello"; // &str implements Clone assert_eq!("Hello", hello.clone());
Provided Methods
fn clone_from(&mut self, source: &Self)
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<A, B, C, D, E, F, G, H, I, J, K, L> Clone for (A, B, C, D, E, F, G, H, I, J, K, L) where B: Clone, H: Clone, F: Clone, D: Clone, I: Clone, E: Clone, L: Clone, G: Clone, J: Clone, A: Clone, C: Clone, K: Cloneimpl<A, B, C, D, E, F, G, H, I, J, K> Clone for (A, B, C, D, E, F, G, H, I, J, K) where C: Clone, D: Clone, I: Clone, J: Clone, A: Clone, G: Clone, H: Clone, K: Clone, E: Clone, B: Clone, F: Cloneimpl<A, B, C, D, E, F, G, H, I, J> Clone for (A, B, C, D, E, F, G, H, I, J) where J: Clone, I: Clone, C: Clone, D: Clone, E: Clone, F: Clone, A: Clone, G: Clone, H: Clone, B: Cloneimpl<A, B, C, D, E, F, G, H, I> Clone for (A, B, C, D, E, F, G, H, I) where E: Clone, G: Clone, A: Clone, F: Clone, B: Clone, D: Clone, I: Clone, C: Clone, H: Cloneimpl<A, B, C, D, E, F, G, H> Clone for (A, B, C, D, E, F, G, H) where H: Clone, C: Clone, F: Clone, A: Clone, G: Clone, E: Clone, D: Clone, B: Cloneimpl<A, B, C, D, E, F, G> Clone for (A, B, C, D, E, F, G) where E: Clone, D: Clone, A: Clone, G: Clone, B: Clone, C: Clone, F: Cloneimpl<A, B, C, D, E, F> Clone for (A, B, C, D, E, F) where B: Clone, E: Clone, F: Clone, D: Clone, C: Clone, A: Cloneimpl<A, B, C, D, E> Clone for (A, B, C, D, E) where D: Clone, A: Clone, B: Clone, E: Clone, C: Cloneimpl<A, B, C, D> Clone for (A, B, C, D) where B: Clone, D: Clone, A: Clone, C: Cloneimpl<A, B, C> Clone for (A, B, C) where B: Clone, A: Clone, C: Cloneimpl<A, B> Clone for (A, B) where A: Clone, B: Cloneimpl<A> Clone for (A,) where A: Cloneimpl<T> Clone for [T; 32] where T: Copyimpl<T> Clone for [T; 31] where T: Copyimpl<T> Clone for [T; 30] where T: Copyimpl<T> Clone for [T; 29] where T: Copyimpl<T> Clone for [T; 28] where T: Copyimpl<T> Clone for [T; 27] where T: Copyimpl<T> Clone for [T; 26] where T: Copyimpl<T> Clone for [T; 25] where T: Copyimpl<T> Clone for [T; 24] where T: Copyimpl<T> Clone for [T; 23] where T: Copyimpl<T> Clone for [T; 22] where T: Copyimpl<T> Clone for [T; 21] where T: Copyimpl<T> Clone for [T; 20] where T: Copyimpl<T> Clone for [T; 19] where T: Copyimpl<T> Clone for [T; 18] where T: Copyimpl<T> Clone for [T; 17] where T: Copyimpl<T> Clone for [T; 16] where T: Copyimpl<T> Clone for [T; 15] where T: Copyimpl<T> Clone for [T; 14] where T: Copyimpl<T> Clone for [T; 13] where T: Copyimpl<T> Clone for [T; 12] where T: Copyimpl<T> Clone for [T; 11] where T: Copyimpl<T> Clone for [T; 10] where T: Copyimpl<T> Clone for [T; 9] where T: Copyimpl<T> Clone for [T; 8] where T: Copyimpl<T> Clone for [T; 7] where T: Copyimpl<T> Clone for [T; 6] where T: Copyimpl<T> Clone for [T; 5] where T: Copyimpl<T> Clone for [T; 4] where T: Copyimpl<T> Clone for [T; 3] where T: Copyimpl<T> Clone for [T; 2] where T: Copyimpl<T> Clone for [T; 1] where T: Copyimpl<T> Clone for [T; 0] where T: Copyimpl Clone for TypeIdimpl Clone for charimpl Clone for boolimpl Clone for ()impl Clone for f64impl Clone for f32impl Clone for u64impl Clone for u32impl Clone for u16impl Clone for u8impl Clone for usizeimpl Clone for i64impl Clone for i32impl Clone for i16impl Clone for i8impl Clone for isizeimpl<T> Clone for *mut T where T: ?Sizedimpl<T> Clone for *const T where T: ?Sizedimpl<T> Clone for Cell<T> where T: Copyimpl<T> Clone for RefCell<T> where T: Cloneimpl Clone for BorrowStateimpl Clone for Orderingimpl<H> Clone for BuildHasherDefault<H>impl Clone for SipHasherimpl<T> Clone for Rev<T> where T: Cloneimpl<I> Clone for Cloned<I> where I: Cloneimpl<I> Clone for Cycle<I> where I: Cloneimpl<A, B> Clone for Chain<A, B> where A: Clone, B: Cloneimpl<A, B> Clone for Zip<A, B> where A: Clone, B: Cloneimpl<I, F> Clone for Map<I, F> where F: Clone, I: Cloneimpl<I, P> Clone for Filter<I, P> where I: Clone, P: Cloneimpl<I, F> Clone for FilterMap<I, F> where F: Clone, I: Cloneimpl<I> Clone for Enumerate<I> where I: Cloneimpl<I> Clone for Peekable<I> where I: Clone + Iterator, I::Item: Cloneimpl<I, P> Clone for SkipWhile<I, P> where P: Clone, I: Cloneimpl<I, P> Clone for TakeWhile<I, P> where I: Clone, P: Cloneimpl<I> Clone for Skip<I> where I: Cloneimpl<I> Clone for Take<I> where I: Cloneimpl<I, St, F> Clone for Scan<I, St, F> where I: Clone, St: Clone, F: Cloneimpl<I, U, F> Clone for FlatMap<I, U, F> where F: Clone, U: Clone + IntoIterator, I: Clone, U::IntoIter: Cloneimpl<I> Clone for Fuse<I> where I: Cloneimpl<I, F> Clone for Inspect<I, F> where I: Clone, F: Cloneimpl<A, R> Clone for StepBy<A, R> where A: Clone, R: Cloneimpl<A> Clone for Repeat<A> where A: Cloneimpl<T> Clone for Empty<T>impl<T> Clone for Once<T> where T: Cloneimpl<T> Clone for PhantomData<T> where T: ?Sizedimpl Clone for RangeFullimpl<Idx> Clone for Range<Idx> where Idx: Cloneimpl<Idx> Clone for RangeFrom<Idx> where Idx: Cloneimpl<Idx> Clone for RangeTo<Idx> where Idx: Cloneimpl<Idx> Clone for RangeInclusive<Idx> where Idx: Cloneimpl<Idx> Clone for RangeToInclusive<Idx> where Idx: Cloneimpl<T> Clone for Shared<T> where T: ?Sizedimpl<T> Clone for Slice<T>impl Clone for TraitObjectimpl<T, E> Clone for Result<T, E> where T: Clone, E: Cloneimpl<'a, T> Clone for Iter<'a, T>impl<T> Clone for Option<T> where T: Cloneimpl<'a, A> Clone for Iter<'a, A>impl<A> Clone for IntoIter<A> where A: Cloneimpl Clone for ExchangeHeapSingletonimpl<T> Clone for Box<[T]> where T: Cloneimpl Clone for Box<str>impl<T> Clone for Box<T> where T: Cloneimpl<T> Clone for Rc<T> where T: ?Sizedimpl<T> Clone for Weak<T> where T: ?Sizedimpl<'a, B> Clone for Cow<'a, B> where B: ToOwned + ?Sizedimpl Clone for Errorimpl<'a> Clone for Arguments<'a>impl<'a, T, P> Clone for Split<'a, T, P> where P: Clone + FnMut(&T) -> boolimpl<'a, T> Clone for Iter<'a, T>impl<'a, T> Clone for Chunks<'a, T>impl<'a, T> Clone for Windows<'a, T>impl<'a> Clone for EncodeUtf16<'a>impl Clone for CharRangeimpl<'a, P> Clone for MatchIndices<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl<'a, P> Clone for RSplitTerminator<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl<'a> Clone for CharIndices<'a>impl<'a, P> Clone for Split<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl<'a> Clone for LinesAny<'a>impl<'a> Clone for Lines<'a>impl<'a> Clone for Chars<'a>impl<'a, P> Clone for RMatches<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl<'a, P> Clone for RSplitN<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl Clone for SearchStepimpl<'a> Clone for CharSearcher<'a>impl<'a, 'b> Clone for CharSliceSearcher<'a, 'b>impl<'a, F> Clone for CharPredicateSearcher<'a, F> where F: Clone + FnMut(char) -> boolimpl<'a, 'b> Clone for StrSearcher<'a, 'b>impl<'a, P> Clone for SplitN<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl<'a> Clone for Bytes<'a>impl<'a, P> Clone for Matches<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl<'a, P> Clone for RSplit<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl Clone for ParseBoolErrorimpl<'a, P> Clone for SplitTerminator<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl<'a, P> Clone for RMatchIndices<'a, P> where P: Pattern<'a>, P::Searcher: Cloneimpl Clone for Utf8Errorimpl Clone for Stringimpl Clone for ParseErrorimpl<T> Clone for Vec<T> where T: Cloneimpl<T> Clone for IntoIter<T> where T: Cloneimpl<I> Clone for DecodeUtf16<I> where I: Clone + Iterator<Item=u16>impl Clone for DecodeUtf16Errorimpl Clone for EscapeUnicodeimpl Clone for EscapeDefaultimpl Clone for FpCategoryimpl Clone for ParseIntErrorimpl<T> Clone for Wrapping<T> where T: Cloneimpl Clone for LocalKeyStateimpl Clone for Threadimpl<T> Clone for Bound<T> where T: Cloneimpl<T> Clone for BinaryHeap<T> where T: Cloneimpl<K, V> Clone for BTreeMap<K, V> where V: Clone, K: Cloneimpl<T> Clone for BTreeSet<T> where T: Cloneimpl<A> Clone for LinkedList<A> where A: Cloneimpl<T> Clone for VecDeque<T> where T: Cloneimpl<'a, T> Clone for Iter<'a, T>impl<'a, K, V> Clone for Values<'a, K, V>impl<'a, K, V> Clone for Iter<'a, K, V>impl<'a, K, V> Clone for Keys<'a, K, V>impl<'a, K, V> Clone for Range<'a, K, V>impl<'a, T> Clone for Range<'a, T>impl<'a, T> Clone for Intersection<'a, T>impl<'a, T> Clone for Iter<'a, T>impl<'a, T> Clone for Union<'a, T>impl<'a, T> Clone for SymmetricDifference<'a, T>impl<'a, T> Clone for Difference<'a, T>impl<'a, T> Clone for Iter<'a, T>impl<T> Clone for IntoIter<T> where T: Cloneimpl<'a, T> Clone for Iter<'a, T>impl<T> Clone for IntoIter<T> where T: Cloneimpl<K: Clone, V: Clone, S: Clone> Clone for HashMap<K, V, S>impl<'a, K, V> Clone for Iter<'a, K, V>impl<'a, K, V> Clone for Keys<'a, K, V>impl<'a, K, V> Clone for Values<'a, K, V>impl Clone for RandomStateimpl<T: Clone, S: Clone> Clone for HashSet<T, S>impl<'a, K> Clone for Iter<'a, K>impl<'a, T, S> Clone for Intersection<'a, T, S>impl<'a, T, S> Clone for Difference<'a, T, S>impl<'a, T, S> Clone for SymmetricDifference<'a, T, S>impl<'a, T, S> Clone for Union<'a, T, S>impl Clone for VarErrorimpl Clone for CStringimpl Clone for NulErrorimpl Clone for IntoStringErrorimpl Clone for OsStringimpl Clone for Metadataimpl Clone for OpenOptionsimpl Clone for Permissionsimpl Clone for FileTypeimpl<T: Clone> Clone for Cursor<T>impl Clone for ErrorKindimpl Clone for SeekFromimpl Clone for IpAddrimpl Clone for Ipv6MulticastScopeimpl Clone for Ipv4Addrimpl Clone for Ipv6Addrimpl Clone for SocketAddrimpl Clone for SocketAddrV4impl Clone for SocketAddrV6impl Clone for AddrParseErrorimpl Clone for Shutdownimpl Clone for SocketAddrimpl Clone for statimpl<'a> Clone for Prefix<'a>impl<'a> Clone for PrefixComponent<'a>impl<'a> Clone for Component<'a>impl<'a> Clone for Components<'a>impl<'a> Clone for Iter<'a>impl Clone for PathBufimpl Clone for StripPrefixErrorimpl Clone for Outputimpl Clone for ExitStatusimpl<T> Clone for Arc<T> where T: ?Sizedimpl<T> Clone for Weak<T> where T: ?Sizedimpl Clone for Orderingimpl<T: Clone> Clone for SendError<T>impl Clone for RecvErrorimpl Clone for TryRecvErrorimpl<T: Clone> Clone for TrySendError<T>impl<T> Clone for Sender<T>impl<T> Clone for SyncSender<T>impl Clone for WaitTimeoutResultimpl Clone for Durationimpl Clone for Instantimpl Clone for SystemTimeimpl Clone for SystemTimeErrorimpl Clone for SocketAddrimpl Clone for XorShiftRngimpl Clone for IsaacRngimpl Clone for Isaac64Rngimpl Clone for ReseedWithDefaultimpl Clone for ThreadRng