/// A type that collects the steps of an algorithm.
///
/// [`StepCollector`] is also implemented for the unit type `()`. This is useful when you don't
/// want to know the steps taken by an algorithm, which can enable the solver to use more
/// efficient, less-human-friendly algorithms.