pub type HandlerFn<P> = fn(ctx: &mut BattleCtx<'_, P>, relay: RelayVar, target: BattlerRef, source: BattlerRef, source_effect: EffectId) -> HandlerResult;Expand description
A handler is a zero-capture fn pointer (design §1.2): it cannot capture
or alias battle state, so the only mutable path is through ctx. Per-effect
counter state lives in EffectState, not a closure.
P is the game’s EffectProvider.