heim_common/
macros.rs

1//! Inner macros used across `heim-*` sub-crates.
2
3/// Generate boilerplate code for newtypes hiding the platform-specific implementations.
4#[macro_export]
5macro_rules! wrap {
6    ($type:path, $inner:path) => {
7        #[doc(hidden)]
8        impl AsRef<$inner> for $type {
9            fn as_ref(&self) -> &$inner {
10                &self.0
11            }
12        }
13
14        #[doc(hidden)]
15        impl From<$inner> for $type {
16            fn from(inner: $inner) -> $type {
17                $type(inner)
18            }
19        }
20    };
21    ($lifetime:tt, $type:path, $inner:path) => {
22        #[doc(hidden)]
23        impl<$lifetime> AsRef<$inner> for $type {
24            fn as_ref(&self) -> &$inner {
25                &self.0
26            }
27        }
28
29        #[doc(hidden)]
30        impl<$lifetime> From<$inner> for $type {
31            fn from(inner: $inner) -> $type {
32                $type(inner)
33            }
34        }
35    };
36}