1 //! The public parts of this private module are used to create traits 2 //! that cannot be implemented outside of our own crate. This way we 3 //! can feel free to extend those traits without worrying about it 4 //! being a breaking change for other implementations. 5 6 /// If this type is pub but not publicly reachable, third parties 7 /// can't name it and can't implement traits using it. 8 #[allow(missing_debug_implementations)] 9 pub struct PrivateMarker; 10 11 macro_rules! private_decl { 12 () => { 13 /// This trait is private; this method exists to make it 14 /// impossible to implement outside the crate. 15 #[doc(hidden)] 16 fn __rayon_private__(&self) -> crate::private::PrivateMarker; 17 }; 18 } 19 20 macro_rules! private_impl { 21 () => { 22 fn __rayon_private__(&self) -> crate::private::PrivateMarker { 23 crate::private::PrivateMarker 24 } 25 }; 26 } 27