| 1 | #![ no_std] | 
| 2 | #![ forbid(unsafe_code)] | 
|---|
| 3 |  | 
|---|
| 4 | #[ macro_export] | 
|---|
| 5 | macro_rules! impl_mirrored { | 
|---|
| 6 | { | 
|---|
| 7 | type Mirror = $tinyname:ident; | 
|---|
| 8 | $( | 
|---|
| 9 | $(#[$attr:meta])* | 
|---|
| 10 | $v:vis fn $fname:ident ($seif:ident : $seifty:ty $(,$argname:ident : $argtype:ty)*) $(-> $ret:ty)? ; | 
|---|
| 11 | )* | 
|---|
| 12 | } => { | 
|---|
| 13 | $( | 
|---|
| 14 | $(#[$attr])* | 
|---|
| 15 | #[inline(always)] | 
|---|
| 16 | $v fn $fname($seif : $seifty, $($argname: $argtype),*) $(-> $ret)? { | 
|---|
| 17 | match $seif { | 
|---|
| 18 | $tinyname::Inline(i) => i.$fname($($argname),*), | 
|---|
| 19 | $tinyname::Heap(h) => h.$fname($($argname),*), | 
|---|
| 20 | } | 
|---|
| 21 | } | 
|---|
| 22 | )* | 
|---|
| 23 | }; | 
|---|
| 24 | } | 
|---|
| 25 |  | 
|---|
| 26 |  | 
|---|