pub trait Scheduler: Send + Sync {
// Required method
fn schedule<'a, 'b>(
&'b self,
runners: &'a Vec<RunnerMetadata, Global>,
ctx: &Context
) -> Option<&'a RunnerMetadata>
where 'b: 'a;
// Provided methods
fn on_run_workflow(&self, _workflow: Workflow) { ... }
fn on_run_job(&self, _job: Job) { ... }
fn on_run_step(&self, _step: Step) { ... }
fn on_step_completed(&self, _result: StepRunResult) { ... }
fn on_job_completed(&self, _result: JobRunResult) { ... }
fn on_workflow_completed(&self, _result: WorkflowRunResult) { ... }
}