fn weapon_requirement_met( program: &CombatProgram, candidate: CastCandidate, ) -> Result<(), CastReject>