fn exert_effort(&mut self) -> Option<usize> {
        self.exert_logic.as_ref().and_then(|exert_logic| {
            self.exert_logic_param.clear();
            self.exert_logic_param.extend(self.merging.iter().enumerate().rev().map(|(index, batch)| {
                match batch {
                    MergeState::Vacant => (index, 0, 0),
                    MergeState::Single(_) => (index, 1, batch.len()),
                    MergeState::Double(_) => (index, 2, batch.len()),
                }
            }));

            (exert_logic)(&self.exert_logic_param[..])
        })
    }
Determine the amount of effort we should exert in the absence of updates.

This method prepares an iterator over batches, including the level, count, and length of each layer.
It supplies this to `self.exert_logic`, who produces the response of the amount of exertion to apply.
differential-dataflow/src/trace/implementations/spine_fueled.rs