| 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 | |