File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change 1+ // build-pass
2+ // The ICE didn't happen with `cargo check` but `cargo build`.
3+
4+ use std:: marker:: PhantomData ;
5+
6+ trait Owned < ' a > {
7+ type Reader ;
8+ }
9+
10+ impl < ' a > Owned < ' a > for ( ) {
11+ type Reader = ( ) ;
12+ }
13+
14+ trait Handler {
15+ fn handle ( & self ) ;
16+ }
17+
18+ struct CtxHandlerWithoutState < M , F > {
19+ message_type : PhantomData < M > ,
20+ _function : F ,
21+ }
22+
23+ impl < M , F > CtxHandlerWithoutState < M , F > {
24+ pub fn new ( _function : F ) -> Self {
25+ Self {
26+ message_type : PhantomData ,
27+ _function,
28+ }
29+ }
30+ }
31+
32+ impl < ' a , M , F > Handler for CtxHandlerWithoutState < M , F >
33+ where
34+ F : Fn ( <M as Owned < ' a > >:: Reader ) ,
35+ M : Owned < ' a > ,
36+ {
37+ fn handle ( & self ) { }
38+ }
39+
40+ fn e_to_i < M : for < ' a > Owned < ' a > > ( _: <M as Owned < ' _ > >:: Reader ) { }
41+
42+ fn send_external_to_internal < M > ( )
43+ where
44+ M : for < ' a > Owned < ' a > ,
45+ {
46+ let _: Box < dyn Handler > = Box :: new ( CtxHandlerWithoutState :: < M , _ > :: new ( e_to_i :: < M > ) ) ;
47+ }
48+
49+ fn main ( ) {
50+ send_external_to_internal :: < ( ) > ( )
51+ }
You can’t perform that action at this time.
0 commit comments