     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    use std::marker::PhantomData;
    use std::panic::{RefUnwindSafe, UnwindSafe};
    use std::rc::Rc;

    // Zero sized marker with the correct set of autotrait impls we want all proc
    // macro types to have.
    pub(crate) type Marker = PhantomData<ProcMacroAutoTraits>;

    pub(crate) use self::value::*;

    mod value {
        pub(crate) use std::marker::PhantomData as Marker;
    }

    pub(crate) struct ProcMacroAutoTraits(Rc<()>);

    impl UnwindSafe for ProcMacroAutoTraits {}
    impl RefUnwindSafe for ProcMacroAutoTraits {}