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
macro_rules! impl_for_refs {
( impl<$g:ident: $b:ident> $imp:ident for $t:ty { fn $method:ident() -> $u:ty } ) => {
impl<'a, $g: $b> $imp<$u> for &'a $t {
type Output = <$t as $imp<$u>>::Output;
fn $method(self, other: $u) -> <$t as $imp<$u>>::Output {
$imp::$method(*self, other)
}
}
impl<$g: $b> $imp<&$u> for $t {
type Output = <$t as $imp<$u>>::Output;
fn $method(self, other: &$u) -> <$t as $imp<$u>>::Output {
$imp::$method(self, *other)
}
}
impl<$g: $b> $imp<&$u> for &$t {
type Output = <$t as $imp<$u>>::Output;
fn $method(self, other: &$u) -> <$t as $imp<$u>>::Output {
$imp::$method(*self, *other)
}
}
}
}