1#![doc = include_str!("../README.md")]
2#![forbid(unsafe_code)]
3
4mod options;
5mod translate;
6
7pub use options::{HighsMethod, HighsOptions, HighsPresolve};
8pub use translate::solve;
9
10use oximo_core::{Model, ModelKind};
11use oximo_solver::{Solver, SolverError, SolverResult};
12
13#[derive(Debug, Default, Clone, Copy)]
18pub struct Highs;
19
20impl Solver for Highs {
21 type Options = HighsOptions;
22
23 fn name(&self) -> &str {
24 "highs"
25 }
26
27 fn supports(&self, kind: ModelKind) -> bool {
28 matches!(kind, ModelKind::LP | ModelKind::MILP | ModelKind::QP)
29 }
30
31 fn solve(&mut self, model: &Model, opts: &HighsOptions) -> Result<SolverResult, SolverError> {
32 translate::solve(model, opts)
33 }
34}