#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum StorageTier {
L0Ram,
L1Nvme,
L2Remote,
}
impl StorageTier {
pub fn is_memory_resident(self) -> bool {
matches!(self, StorageTier::L0Ram)
}
pub fn uses_mmap(self) -> bool {
matches!(self, StorageTier::L1Nvme)
}
pub fn is_remote(self) -> bool {
matches!(self, StorageTier::L2Remote)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn tier_properties() {
assert!(StorageTier::L0Ram.is_memory_resident());
assert!(!StorageTier::L0Ram.uses_mmap());
assert!(!StorageTier::L0Ram.is_remote());
assert!(!StorageTier::L1Nvme.is_memory_resident());
assert!(StorageTier::L1Nvme.uses_mmap());
assert!(!StorageTier::L1Nvme.is_remote());
assert!(!StorageTier::L2Remote.is_memory_resident());
assert!(!StorageTier::L2Remote.uses_mmap());
assert!(StorageTier::L2Remote.is_remote());
}
}