Skip to content

Commit 1c4c381

Browse files
committed
rename Continue variant to Reschedule, adds more helpful error message
1 parent 8ca2170 commit 1c4c381

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

rustler/src/schedule.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub fn consume_timeslice(env: Env, percent: i32) -> bool {
2121
/// See `schedule_nif!` for a convenience wrapper around this type.
2222
pub enum NifScheduleResult<T> {
2323
Final(T),
24-
Continue {
24+
Reschedule {
2525
fun_name: &'static str,
2626
fun: unsafe extern "C" fn(NIF_ENV, i32, *const NIF_TERM) -> NIF_TERM,
2727
args: Vec<T>,
@@ -48,7 +48,7 @@ where
4848
Err(inner) => inner.as_returned(env),
4949
Ok(inner) => match inner {
5050
NifScheduleResult::Final(inner) => inner.as_returned(env),
51-
NifScheduleResult::Continue {
51+
NifScheduleResult::Reschedule {
5252
fun_name,
5353
fun,
5454
flags,
@@ -92,10 +92,13 @@ macro_rules! schedule_nif {
9292
schedule_nif!($fun_name, $args, $crate::schedule::SchedulerFlags::Normal)
9393
};
9494
($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 {
97100
fun_name: $fun_name,
98-
fun: *func,
101+
fun: *(func.unwrap()),
99102
args: $args,
100103
flags: $flags,
101104
})

0 commit comments

Comments
 (0)