fn next_task()

in src/scheduler/replay.rs [67:90]


    fn next_task(&mut self, runnable: &[TaskId], _current: Option<TaskId>, _is_yielding: bool) -> Option<TaskId> {
        if self.steps >= self.schedule.steps.len() {
            assert!(self.allow_incomplete, "schedule ended early");
            return None;
        }
        match self.schedule.steps[self.steps] {
            ScheduleStep::Random => {
                panic!("expected context switch but next schedule step is random choice");
            }
            ScheduleStep::Task(next) => {
                if !runnable.contains(&next) {
                    assert!(
                        self.allow_incomplete,
                        "scheduled task is not runnable, expected to run {:?}, but choices were {:?}",
                        next, runnable
                    );
                    None
                } else {
                    self.steps += 1;
                    Some(next)
                }
            }
        }
    }