pub fn select_runner(language: &Language, packages: &[String]) -> RunnerKindExpand description
Select the runner for a lesson’s language, threading packages to the
Python runner (ADR-0011).
Pure: it maps a Language to a runner with no I/O (§2.1). The match is
exhaustive with no wildcard arm, so a new Language variant fails to
compile here until it is dispatched explicitly — a language can never
silently fall through to the wrong runner. Packages are constructor state
on PythonRunner, not a per-call parameter on the Runner trait (§3.4);
R ignores them.