pub trait LineSearch<T: Scalar, F: VectorFunction<T>> {
// Required method
fn step(
&mut self,
function: &mut F,
f: DVectorViewMut<'_, T>,
x: DVectorViewMut<'_, T>,
direction: DVectorView<'_, T>,
) -> Result<T, Box<dyn Error>>;
}