pub trait AsRange: Sized {
    type Item: Measure + PartialEnum;

    // Required methods
    fn start(&self) -> Bound<&Self::Item>;
    fn end(&self) -> Bound<&Self::Item>;

    // Provided methods
    fn is_empty(&self) -> bool { ... }
    fn intersects<R: AsRange>(&self, other: &R) -> bool
       where Self::Item: PartialOrd<R::Item> + Measure<R::Item> { ... }
    fn connected_to<R: AsRange>(&self, other: &R) -> bool
       where Self::Item: PartialOrd<R::Item> + Measure<R::Item> { ... }
    fn intersected_with<'a, R: AsRange<Item = Self::Item>>(
        &'a self,
        other: &'a R
    ) -> AnyRange<&'a Self::Item>
       where Self::Item: PartialOrd + Measure { ... }
    fn without<'a, R: AsRange<Item = Self::Item>>(
        &'a self,
        other: &'a R
    ) -> Difference<&'a Self::Item>
       where Self::Item: PartialOrd + Measure { ... }
    fn product<'a, R: AsRange<Item = Self::Item>>(
        &'a self,
        other: &'a R
    ) -> Product<&'a Self::Item>
       where Self::Item: PartialOrd + Measure { ... }
}
Expand description

Types that can be interpreted as ranges.

Required Associated Types§

source

type Item: Measure + PartialEnum

Type of the elements of the range.

Required Methods§

source

fn start(&self) -> Bound<&Self::Item>

Start bound of the range.

source

fn end(&self) -> Bound<&Self::Item>

End bound of the range.

Provided Methods§

source

fn is_empty(&self) -> bool

source

fn intersects<R: AsRange>(&self, other: &R) -> boolwhere Self::Item: PartialOrd<R::Item> + Measure<R::Item>,

source

fn connected_to<R: AsRange>(&self, other: &R) -> boolwhere Self::Item: PartialOrd<R::Item> + Measure<R::Item>,

source

fn intersected_with<'a, R: AsRange<Item = Self::Item>>( &'a self, other: &'a R ) -> AnyRange<&'a Self::Item>where Self::Item: PartialOrd + Measure,

source

fn without<'a, R: AsRange<Item = Self::Item>>( &'a self, other: &'a R ) -> Difference<&'a Self::Item>where Self::Item: PartialOrd + Measure,

source

fn product<'a, R: AsRange<Item = Self::Item>>( &'a self, other: &'a R ) -> Product<&'a Self::Item>where Self::Item: PartialOrd + Measure,

Implementations on Foreign Types§

source§

impl AsRange for f64

§

type Item = f64

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for char

§

type Item = char

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for u64

§

type Item = u64

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for u16

§

type Item = u16

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl<T: Measure + PartialEnum> AsRange for RangeToInclusive<T>

§

type Item = T

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl<T: Measure + PartialEnum> AsRange for RangeTo<T>

§

type Item = T

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl<T: Measure + PartialEnum> AsRange for RangeInclusive<T>

§

type Item = T

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for usize

§

type Item = usize

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for f32

§

type Item = f32

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl<T: Measure + PartialEnum> AsRange for Range<T>

§

type Item = T

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for i32

§

type Item = i32

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for i16

§

type Item = i16

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for i64

§

type Item = i64

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for i8

§

type Item = i8

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for u32

§

type Item = u32

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl<T: Measure + PartialEnum> AsRange for RangeFrom<T>

§

type Item = T

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

source§

impl AsRange for u8

§

type Item = u8

source§

fn start(&self) -> Bound<&Self::Item>

source§

fn end(&self) -> Bound<&Self::Item>

Implementors§