use core::ops::RangeInclusive;
use super::Address;
use crate::traits::Afi;
#[derive(Clone, Debug)]
pub struct Range<A: Afi>(RangeInclusive<Address<A>>);
impl<A: Afi> Range<A> {
pub const fn new(start: Address<A>, end: Address<A>) -> Self {
Self(start..=end)
}
pub fn contains(&self, addr: &Address<A>) -> bool {
self.0.contains(addr)
}
}
impl<A: Afi> From<&RangeInclusive<A::Primitive>> for Range<A> {
fn from(range: &RangeInclusive<A::Primitive>) -> Self {
Self::new(Address::new(*range.start()), Address::new(*range.end()))
}
}