File tree 1 file changed +42
-0
lines changed
1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ // build-pass
2
+ // compile-flags: -C opt-level=3
3
+
4
+ #![ crate_type = "lib" ]
5
+
6
+ pub trait Archive {
7
+ type Archived ;
8
+ type Resolver ;
9
+
10
+ fn resolve ( resolver : Self :: Resolver , out : * mut Self :: Archived ) ;
11
+ }
12
+
13
+ pub type Archived < T > = <T as Archive >:: Archived ;
14
+ pub type Resolver < T > = <T as Archive >:: Resolver ;
15
+
16
+ pub struct Record < ' a > {
17
+ _payload : & ' a [ u8 ] ,
18
+ }
19
+
20
+ pub struct ArchivedRecord < ' a >
21
+ where
22
+ & ' a [ u8 ] : Archive ,
23
+ {
24
+ _payload : Archived < & ' a [ u8 ] > ,
25
+ }
26
+
27
+ pub struct RecordResolver < ' a >
28
+ where
29
+ & ' a [ u8 ] : Archive ,
30
+ {
31
+ _payload : Resolver < & ' a [ u8 ] > ,
32
+ }
33
+
34
+ impl < ' a > Archive for Record < ' a >
35
+ where
36
+ & ' a [ u8 ] : Archive ,
37
+ {
38
+ type Archived = ArchivedRecord < ' a > ;
39
+ type Resolver = RecordResolver < ' a > ;
40
+
41
+ fn resolve ( _resolver : Self :: Resolver , _out : * mut Self :: Archived ) { }
42
+ }
You can’t perform that action at this time.
0 commit comments