File tree Expand file tree Collapse file tree 1 file changed +8
-5
lines changed Expand file tree Collapse file tree 1 file changed +8
-5
lines changed Original file line number Diff line number Diff line change @@ -21,7 +21,7 @@ pub fn consume_timeslice(env: Env, percent: i32) -> bool {
21
21
/// See `schedule_nif!` for a convenience wrapper around this type.
22
22
pub enum NifScheduleResult < T > {
23
23
Final ( T ) ,
24
- Continue {
24
+ Reschedule {
25
25
fun_name : & ' static str ,
26
26
fun : unsafe extern "C" fn ( NIF_ENV , i32 , * const NIF_TERM ) -> NIF_TERM ,
27
27
args : Vec < T > ,
48
48
Err ( inner) => inner. as_returned ( env) ,
49
49
Ok ( inner) => match inner {
50
50
NifScheduleResult :: Final ( inner) => inner. as_returned ( env) ,
51
- NifScheduleResult :: Continue {
51
+ NifScheduleResult :: Reschedule {
52
52
fun_name,
53
53
fun,
54
54
flags,
@@ -92,10 +92,13 @@ macro_rules! schedule_nif {
92
92
schedule_nif!( $fun_name, $args, $crate:: schedule:: SchedulerFlags :: Normal )
93
93
} ;
94
94
( $fun_name: expr, $args: expr, $flags: expr) => { {
95
- let func = EXTERN_NIF_MAP . get( $fun_name) . unwrap( ) ;
96
- Ok ( $crate:: schedule:: NifScheduleResult :: Continue {
95
+ let func = EXTERN_NIF_MAP . get( $fun_name) ;
96
+ if func. is_none( ) {
97
+ panic!( "NIF \" {}\" does not exist" , $fun_name) ;
98
+ }
99
+ Ok ( $crate:: schedule:: NifScheduleResult :: Reschedule {
97
100
fun_name: $fun_name,
98
- fun: * func,
101
+ fun: * ( func. unwrap ( ) ) ,
99
102
args: $args,
100
103
flags: $flags,
101
104
} )
You can’t perform that action at this time.
0 commit comments