pub trait ObjectiveFunction<T: FloatNumber, D: Dim>:
CloneBox<T, D>
+ Send
+ Syncwhere
DefaultAllocator: Allocator<D>,{
// Required method
fn f(&self, x: &OVector<T, D>) -> T;
// Provided methods
fn gradient(&self, _x: &OVector<T, D>) -> Option<OVector<T, D>> { ... }
fn x_lower_bound(&self, _x: &OVector<T, D>) -> Option<OVector<T, D>> { ... }
fn x_upper_bound(&self, _x: &OVector<T, D>) -> Option<OVector<T, D>> { ... }
}