File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 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