use crate::{ Block, Row };
impl<B: Block> Row<B> {
pub fn get_block_ref(&self, i: usize) -> Option<&B> {
self.get(i)
}
pub fn get_block_mut(&mut self, i: usize) -> Option<&mut B> {
self.get_mut(i)
}
pub fn get_range_ref(
&self,
start: usize,
end: usize
) -> Option<Vec<&B>> {
if !range_boundary_check_helper(self.blocks.len(), start, end) {
return None
}
let blocks = self.blocks[start..=end].iter().collect();
Some(blocks)
}
pub fn get_range_mut(
&mut self,
start: usize,
end: usize
) -> Option<Vec<&mut B>> {
if !range_boundary_check_helper(self.blocks.len(), start, end) {
return None
}
let blocks = self.blocks[start..=end].iter_mut().collect();
Some(blocks)
}
pub fn get_all_ref(&self) -> Vec<&B> {
self.iter().collect()
}
pub fn get_all_mut(&mut self) -> Vec<&mut B> {
self.iter_mut().collect()
}
}
fn range_boundary_check_helper(total: usize, start: usize, end: usize) -> bool {
if start > end || end >= total { false }
else { true }
}