use std::ops::Range;
#[derive(Clone,Copy,Debug,PartialEq)]
pub struct Region {
pub start: usize,
pub end: usize
}
impl Region {
pub fn new(start: usize, end: usize) -> Self {
Self {start,end}
}
pub fn len(&self) -> usize {
self.end - self.start
}
pub fn shift(&mut self, delta: usize) {
self.start += delta;
self.end += delta;
}
}
impl From<Range<usize>> for Region {
fn from(r: Range<usize>) -> Region {
Region{start:r.start,end:r.end}
}
}
impl Into<Range<usize>> for Region {
fn into(self) -> Range<usize> { self.start .. self.end }
}