1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#![deny(warnings)] #![cfg_attr(not(feature="std"), no_std)] #[cfg(feature="std")] extern crate core; use core::marker::PhantomData; #[cfg(feature="std")] use std::panic::{UnwindSafe, RefUnwindSafe}; pub use educe::Educe; #[derive(Educe)] #[educe(Clone, Copy, Eq, Ord, PartialEq, PartialOrd, Hash, Default, Debug)] pub struct PhantomType<T: ?Sized>(PhantomData<T>); unsafe impl<T: ?Sized> Send for PhantomType<T> { } unsafe impl<T: ?Sized> Sync for PhantomType<T> { } impl<T: ?Sized> Unpin for PhantomType<T> { } #[cfg(feature="std")] impl<T: ?Sized> RefUnwindSafe for PhantomType<T> { } #[cfg(feature="std")] impl<T: ?Sized> UnwindSafe for PhantomType<T> { }