pub trait ImplicitClone: Clone {
// Provided method
fn implicit_clone(&self) -> Self { ... }
}
Expand description
Provided Methods§
Sourcefn implicit_clone(&self) -> Self
fn implicit_clone(&self) -> Self
This function is not magic; it is literally defined as
ⓘ
fn implicit_clone(&self) -> Self {
self.clone()
}
It is useful when you want to clone but also ensure that the type implements
ImplicitClone
.
Examples:
use implicit_clone::ImplicitClone;
let x: u32 = Default::default();
let clone = ImplicitClone::implicit_clone(&x);
ⓘ
use implicit_clone::ImplicitClone;
let x: Vec<u32> = Default::default();
// does not compile because Vec<_> does not implement ImplicitClone
let clone = ImplicitClone::implicit_clone(&x);
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§
impl ImplicitClone for bool
impl ImplicitClone for char
impl ImplicitClone for f32
impl ImplicitClone for f64
impl ImplicitClone for i8
impl ImplicitClone for i16
impl ImplicitClone for i32
impl ImplicitClone for i64
impl ImplicitClone for i128
impl ImplicitClone for isize
impl ImplicitClone for u8
impl ImplicitClone for u16
impl ImplicitClone for u32
impl ImplicitClone for u64
impl ImplicitClone for u128
impl ImplicitClone for ()
impl ImplicitClone for usize
impl<T1: ImplicitClone> ImplicitClone for (T1,)
impl<T1: ImplicitClone, T2: ImplicitClone> ImplicitClone for (T1, T2)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone> ImplicitClone for (T1, T2, T3)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone, T4: ImplicitClone> ImplicitClone for (T1, T2, T3, T4)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone, T4: ImplicitClone, T5: ImplicitClone> ImplicitClone for (T1, T2, T3, T4, T5)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone, T4: ImplicitClone, T5: ImplicitClone, T6: ImplicitClone> ImplicitClone for (T1, T2, T3, T4, T5, T6)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone, T4: ImplicitClone, T5: ImplicitClone, T6: ImplicitClone, T7: ImplicitClone> ImplicitClone for (T1, T2, T3, T4, T5, T6, T7)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone, T4: ImplicitClone, T5: ImplicitClone, T6: ImplicitClone, T7: ImplicitClone, T8: ImplicitClone> ImplicitClone for (T1, T2, T3, T4, T5, T6, T7, T8)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone, T4: ImplicitClone, T5: ImplicitClone, T6: ImplicitClone, T7: ImplicitClone, T8: ImplicitClone, T9: ImplicitClone> ImplicitClone for (T1, T2, T3, T4, T5, T6, T7, T8, T9)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone, T4: ImplicitClone, T5: ImplicitClone, T6: ImplicitClone, T7: ImplicitClone, T8: ImplicitClone, T9: ImplicitClone, T10: ImplicitClone> ImplicitClone for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone, T4: ImplicitClone, T5: ImplicitClone, T6: ImplicitClone, T7: ImplicitClone, T8: ImplicitClone, T9: ImplicitClone, T10: ImplicitClone, T11: ImplicitClone> ImplicitClone for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
impl<T1: ImplicitClone, T2: ImplicitClone, T3: ImplicitClone, T4: ImplicitClone, T5: ImplicitClone, T6: ImplicitClone, T7: ImplicitClone, T8: ImplicitClone, T9: ImplicitClone, T10: ImplicitClone, T11: ImplicitClone, T12: ImplicitClone> ImplicitClone for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
impl<T: ImplicitClone> ImplicitClone for Option<T>
impl<T: ?Sized> ImplicitClone for &T
impl<T: ?Sized> ImplicitClone for Rc<T>
impl<T: ?Sized> ImplicitClone for Arc<T>
impl<const N: usize, T: ImplicitClone> ImplicitClone for [T; N]
Implementors§
impl ImplicitClone for implicit_clone::sync::IString
impl ImplicitClone for implicit_clone::unsync::IString
impl<K: Eq + Hash + ImplicitClone + 'static, V: PartialEq + ImplicitClone + 'static> ImplicitClone for implicit_clone::sync::IMap<K, V>
Available on crate feature
map
only.impl<K: Eq + Hash + ImplicitClone + 'static, V: PartialEq + ImplicitClone + 'static> ImplicitClone for implicit_clone::unsync::IMap<K, V>
Available on crate feature
map
only.