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
37
#![ allow( missing_docs ) ]
#[ macro_export ]
macro_rules! _implements
{
( $V : expr => $( $Traits : tt )+ ) =>
{{
use ::core::marker::PhantomData;
trait False
{
fn get( self : &'_ Self ) -> bool { false }
}
impl< T > False
for &'_ PhantomData< T >
where T : ?Sized,
{}
trait True
{
fn get( self : &'_ Self ) -> bool { true }
}
impl< T > True
for PhantomData< T >
where T : $( $Traits )+ + ?Sized,
{}
fn does< T : Sized >( _ : &T ) -> PhantomData< T >
{
PhantomData
}
( &does( &$V ) ).get()
}}
}