Skip to main content

ferrox/
domain_types.rs

1use serde::{Deserialize, Serialize};
2
3/// Index into the node set of a flow network.
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
5#[serde(transparent)]
6pub struct NodeId(pub i32);
7
8/// Duration or time in integer minutes.
9#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
10#[serde(transparent)]
11pub struct Minutes(pub i64);
12
13/// Identifier for a scheduling task.
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
15#[serde(transparent)]
16pub struct TaskId(pub usize);
17
18/// Identifier for a scheduling agent/resource.
19#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
20#[serde(transparent)]
21pub struct AgentId(pub usize);
22
23/// Identifier for a machine in a job-shop problem.
24#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
25#[serde(transparent)]
26pub struct MachineId(pub usize);
27
28/// Identifier for a job in a job-shop problem.
29#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
30#[serde(transparent)]
31pub struct JobId(pub usize);
32
33/// Processing time for an operation (integer time units).
34#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
35#[serde(transparent)]
36pub struct ProcessingTime(pub i64);