# internal_tricks.rs - source
Source of the Rust file `/home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/pyo3-0.13.2/src/internal_tricks.rs`.
Keywords: rust, rustlang, rust-lang

     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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38

    use std::marker::PhantomData;
    use std::rc::Rc;

    /// A marker type that makes the type !Send.
    /// Temporal hack until https://github.com/rust-lang/rust/issues/13231 is resolved.
    pub(crate) type Unsendable = PhantomData<Rc<()>>;

    pub struct PrivateMarker;

    macro_rules! private_decl {
        () => {
            /// This trait is private to implement; this method exists to make it
            /// impossible to implement outside the crate.
            fn __private__(&self) -> crate::internal_tricks::PrivateMarker;
        };
    }

    macro_rules! private_impl {
        () => {
            #[doc(hidden)]
            fn __private__(&self) -> crate::internal_tricks::PrivateMarker {
                crate::internal_tricks::PrivateMarker
            }
        };
    }

    macro_rules! pyo3_exception {
        ($doc: expr, $name: ident, $base: ty) => {
            #[doc = $doc]
            #[repr(transparent)]
            #[allow(non_camel_case_types)]
            pub struct $name($crate::PyAny);

            $crate::impl_exception_boilerplate!($name);

            $crate::create_exception_type_object!(pyo3_runtime, $name, $base);
        };
    }