| //! The public parts of this private module are used to create traits |
| //! that cannot be implemented outside of our own crate. This way we |
| //! can feel free to extend those traits without worrying about it |
| //! being a breaking change for other implementations. |
| |
| /// If this type is pub but not publicly reachable, third parties |
| /// can't name it and can't implement traits using it. |
| #[allow(missing_debug_implementations)] |
| pub struct PrivateMarker; |
| |
| macro_rules! private_decl { |
| () => { |
| /// This trait is private; this method exists to make it |
| /// impossible to implement outside the crate. |
| #[doc(hidden)] |
| fn __rayon_private__(&self) -> crate::private::PrivateMarker; |
| }; |
| } |
| |
| macro_rules! private_impl { |
| () => { |
| fn __rayon_private__(&self) -> crate::private::PrivateMarker { |
| crate::private::PrivateMarker |
| } |
| }; |
| } |