use core::range::{
Range,
RangeFrom,
RangeFull,
RangeInclusive,
RangeTo,
RangeToInclusive
};
use enum_dispatch::enum_dispatch;
#[enum_dispatch(RangeBounds)]
#[derive(Debug)]
pub enum Span {
Range(Range<usize>),
RangeFrom(RangeFrom<usize>),
RangeFull,
RangeInclusive(RangeInclusive<usize>),
RangeTo(RangeTo<usize>),
RangeToInclusive(RangeToInclusive<usize>)
}
const impl Default for Span {
fn default() -> Self {return Span::RangeFull(..)}
}