use std::fmt::Debug;
use thiserror::Error;
use trait_set::trait_set;
mod multi;
mod single;
pub use multi::MultiObjective;
pub use single::SingleObjective;
trait_set! {
pub trait AnyObjective = Debug + Clone + Eq + PartialOrd + Send;
}
pub trait Objective: AnyObjective {}
#[derive(Debug, Error)]
pub enum IllegalObjective {
#[error("NaN is not a valid objective value")]
NaN,
#[error("Negative infinity is not a valid objective value")]
NegativeInfinity,
}