rustplex 0.3.0

A linear programming solver based on the Simplex algorithm for Rust
Documentation
use crate::{common::expression::LinearExpr, modeling::variable::VariableKey};
use std::fmt;

#[derive(Debug, Clone)]
pub struct Objective {
    sense: ObjectiveSense,
    expression: LinearExpr<VariableKey>,
}

#[derive(Debug, Clone, Copy)]
pub enum ObjectiveSense {
    Minimize,
    Maximize,
}

impl Objective {
    pub fn new(sense: ObjectiveSense, expression: LinearExpr<VariableKey>) -> Self {
        Self { sense, expression }
    }

    pub fn sense(&self) -> &ObjectiveSense {
        &self.sense
    }

    pub fn expr(&self) -> &LinearExpr<VariableKey> {
        &self.expression
    }
}

impl fmt::Display for Objective {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        let sense_str = match self.sense {
            ObjectiveSense::Minimize => "Minimize",
            ObjectiveSense::Maximize => "Maximize",
        };

        write!(f, "{} {}", sense_str, self.expression)
    }
}