Struct im_interval_tree::Interval[][src]

pub struct Interval<T: Ord + Clone> { /* fields omitted */ }

A data structure for representing intervals

Implementations

impl<T: Ord + Clone> Interval<T>[src]

pub fn new(low: Bound<T>, high: Bound<T>) -> Interval<T>[src]

Construct a new Interval from two Bounds

Example

use std::ops::Bound::*;
let interval = Interval::new(Included(3), Excluded(5));

pub fn get_overlap(&self, other: &Self) -> Option<Self>[src]

Get the overlap between two Intervals

Example

let interval = Interval::new(Included(1), Excluded(3));
let overlaps = Interval::new(Included(2), Excluded(4));
let no_overlap = Interval::new(Included(3), Excluded(4));

assert_eq!(
    interval.get_overlap(&overlaps),
    Some(Interval::new(Included(2), Excluded(3)))
);

assert_eq!(interval.get_overlap(&no_overlap), None);

pub fn overlaps(&self, other: &Self) -> bool[src]

Check whether two intervals overlap

Example

let interval = Interval::new(Included(1), Excluded(3));
let overlaps = Interval::new(Included(2), Excluded(4));
let no_overlap = Interval::new(Included(3), Excluded(4));

assert_eq!(interval.overlaps(&overlaps), true);
assert_eq!(interval.overlaps(&no_overlap), false);

pub fn contains(&self, other: &Self) -> bool[src]

Check whether an interval contains another

Example

let interval = Interval::new(Included(1), Excluded(4));
let contained = Interval::new(Included(2), Excluded(3));
let not_contained = Interval::new(Included(2), Excluded(6));

assert_eq!(interval.contains(&contained), true);
assert_eq!(interval.contains(&not_contained), false);

pub fn low(&self) -> &Bound<T>[src]

Return the lower bound

Example

let interval = Interval::new(Included(3), Excluded(5));
assert_eq!(interval.low(), &Included(3))

pub fn high(&self) -> &Bound<T>[src]

Return the upper bound

Example

let interval = Interval::new(Included(3), Excluded(5));
assert_eq!(interval.high(), &Excluded(5))

Trait Implementations

impl<T: Clone + Ord> Clone for Interval<T>[src]

impl<T: Debug + Ord + Clone> Debug for Interval<T>[src]

impl<T: Ord + Clone> Eq for Interval<T>[src]

impl<T: Hash + Ord + Clone> Hash for Interval<T>[src]

impl<T: Ord + Clone> Ord for Interval<T>[src]

impl<T: Ord + Clone> PartialEq<Interval<T>> for Interval<T>[src]

impl<T: Ord + Clone> PartialOrd<Interval<T>> for Interval<T>[src]

Auto Trait Implementations

impl<T> !RefUnwindSafe for Interval<T>

impl<T> !Send for Interval<T>

impl<T> !Sync for Interval<T>

impl<T> Unpin for Interval<T>

impl<T> UnwindSafe for Interval<T> where
    T: RefUnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.