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