rayon/
private.rs

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)]
9pub struct PrivateMarker;
10
11macro_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
20macro_rules! private_impl {
21    () => {
22        fn __rayon_private__(&self) -> crate::private::PrivateMarker {
23            crate::private::PrivateMarker
24        }
25    };
26}