#[cfg(feature = "use_core")] extern crate core; #[macro_use] extern crate derivative; use std::marker::PhantomData; struct NoClone; #[derive(Derivative)] #[derivative(Clone, PartialEq)] struct PhantomField { foo: PhantomData, } #[derive(Derivative)] #[derivative(Clone, PartialEq)] struct PhantomTuple { foo: PhantomData<(T,)>, } #[test] fn main() { let phantom_field = PhantomField:: { foo: Default::default() }; let phantom_tuple = PhantomTuple:: { foo: Default::default() }; assert!(phantom_field == phantom_field.clone()); assert!(phantom_tuple == phantom_tuple.clone()); }