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()24 fn 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