1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use alloc::{string::String, vec::Vec};

/// Definitions for MPH
///
/// # Types
///
/// * `C`: Constraints Storage
/// * `O`: Objectives Storage
/// * `SD`: Solution Domain
#[derive(Clone, Debug)]
pub struct MphDefinitions<C, O, SD> {
  pub(crate) hard_cstrs: Vec<C>,
  pub(crate) name: String,
  pub(crate) objs: Vec<O>,
  pub(crate) solution_domain: SD,
}

impl<C, O, SD> MphDefinitions<C, O, SD> {
  /// Hard constraints
  pub fn hard_cstrs(&self) -> &[C] {
    &self.hard_cstrs
  }

  /// Name
  pub fn name(&self) -> &str {
    &self.name
  }

  /// Objectives
  pub fn objs(&self) -> &[O] {
    &self.objs
  }

  pub fn solution_domain(&self) -> &SD {
    &self.solution_domain
  }

  pub fn solution_domain_mut(&mut self) -> &mut SD {
    &mut self.solution_domain
  }
}