heim_common/
macros.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//! Inner macros used across `heim-*` sub-crates.

/// Generate boilerplate code for newtypes hiding the platform-specific implementations.
#[macro_export]
macro_rules! wrap {
    ($type:path, $inner:path) => {
        #[doc(hidden)]
        impl AsRef<$inner> for $type {
            fn as_ref(&self) -> &$inner {
                &self.0
            }
        }

        #[doc(hidden)]
        impl From<$inner> for $type {
            fn from(inner: $inner) -> $type {
                $type(inner)
            }
        }
    };
    ($lifetime:tt, $type:path, $inner:path) => {
        #[doc(hidden)]
        impl<$lifetime> AsRef<$inner> for $type {
            fn as_ref(&self) -> &$inner {
                &self.0
            }
        }

        #[doc(hidden)]
        impl<$lifetime> From<$inner> for $type {
            fn from(inner: $inner) -> $type {
                $type(inner)
            }
        }
    };
}