We aim at providing a wide range of solvers implemented in pure Rust.
Easily plug your optimization problem in different solvers thanks to a consistent interface.
Represent your variables, gradients, Jacobians and Hessians using your own types.
Use Vecs, ndarray, or nalgebra for behind-the-scenes math. Or implement your own backend.
Observe the progress of your optimization by logging to screen or file or implement your own observer.
Mitigate the negative effects of crashes in unstable computing environments by saving regular checkpoints.
Most features can be exchanged for user supplied implementations thanks to Rusts powerful generics and traits.
Use argmins tools and ecosystem to implement your own solver -- with all the features mentioned above.