use std::{collections::HashSet, ops::RangeInclusive}; use crate::BlockState; #[derive(Debug, Clone)] pub struct BlockStates { pub set: HashSet, } impl From> for BlockStates { fn from(range: RangeInclusive) -> Self { let mut set = HashSet::with_capacity((range.end() - range.start() + 1) as usize); for id in range { set.insert(BlockState { id }); } Self { set } } } impl IntoIterator for BlockStates { type Item = BlockState; type IntoIter = std::collections::hash_set::IntoIter; fn into_iter(self) -> Self::IntoIter { self.set.into_iter() } } impl BlockStates { pub fn contains(&self, state: &BlockState) -> bool { self.set.contains(state) } }