#[derive(PartialEq, Eq, Clone, Copy, Debug)]
pub enum CapacityState {
FixedCapacity(usize),
DynamicCapacity {
current_capacity: usize,
maximum_concurrent_capacity: usize,
},
}
impl CapacityState {
pub fn current_capacity(&self) -> usize {
match self {
Self::FixedCapacity(x) => *x,
Self::DynamicCapacity {
current_capacity,
maximum_concurrent_capacity: _,
} => *current_capacity,
}
}
pub fn maximum_concurrent_capacity(&self) -> usize {
match self {
Self::FixedCapacity(x) => *x,
Self::DynamicCapacity {
current_capacity: _,
maximum_concurrent_capacity,
} => *maximum_concurrent_capacity,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn current_capacity() {
assert_eq!(42, CapacityState::FixedCapacity(42).current_capacity());
assert_eq!(
7,
CapacityState::DynamicCapacity {
current_capacity: 7,
maximum_concurrent_capacity: 42
}
.current_capacity()
);
}
#[test]
fn maximum_concurrent_capacity() {
assert_eq!(
42,
CapacityState::FixedCapacity(42).maximum_concurrent_capacity()
);
assert_eq!(
42,
CapacityState::DynamicCapacity {
current_capacity: 7,
maximum_concurrent_capacity: 42
}
.maximum_concurrent_capacity()
);
}
}