1 #[cfg(feature = "use_core")] 2 extern crate core; 3 4 #[macro_use] 5 extern crate derivative; 6 7 use std::marker::PhantomData; 8 9 struct NoClone; 10 11 #[derive(Derivative)] 12 #[derivative(Clone, PartialEq)] 13 struct PhantomField<T> { 14 foo: PhantomData<T>, 15 } 16 17 #[derive(Derivative)] 18 #[derivative(Clone, PartialEq)] 19 struct PhantomTuple<T> { 20 foo: PhantomData<(T,)>, 21 } 22 23 #[test] main()24fn main() { 25 let phantom_field = PhantomField::<NoClone> { foo: Default::default() }; 26 let phantom_tuple = PhantomTuple::<NoClone> { foo: Default::default() }; 27 assert!(phantom_field == phantom_field.clone()); 28 assert!(phantom_tuple == phantom_tuple.clone()); 29 } 30