1#[doc(hidden)]
2#[macro_export(local_inner_macros)]
3macro_rules! _overload_unary {
4 (-, $($t:tt)+) => (_overload_unary_internal!(Neg, neg, $($t)+););
5 (!, $($t:tt)+) => (_overload_unary_internal!(Not, not, $($t)+););
6}
7
8#[doc(hidden)]
9#[macro_export(local_inner_macros)]
10macro_rules! _overload_unary_internal {
11 ($op_trait:ident, $op_fn:ident, $i:ident, $t:ty, $out:ty, $body:block) => (
12 impl ops::$op_trait for $t {
13 type Output = $out;
14 fn $op_fn(self) -> Self::Output {
15 let $i = self;
16 $body
17 }
18 }
19 );
20}
21