#![deny(missing_docs)]
use num::Float;
pub mod fbs;
pub mod panoc;
pub mod problem;
pub mod solver_status;
pub use crate::{constraints, FunctionCallResult, SolverError};
pub use problem::Problem;
pub use solver_status::SolverStatus;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ExitStatus {
Converged,
NotConvergedIterations,
NotConvergedOutOfTime,
}
pub trait Optimizer<T = f64>
where
T: Float,
{
fn solve(&mut self, u: &mut [T]) -> Result<SolverStatus<T>, SolverError>;
}
pub trait AlgorithmEngine<T = f64> {
fn step(&mut self, u: &mut [T]) -> Result<bool, SolverError>;
fn init(&mut self, u: &mut [T]) -> FunctionCallResult;
}