Trait IntoBounds

trait IntoBounds<T>: ~const RangeBounds<T>

Used to convert a range into start and end bounds, consuming the range by value.

IntoBounds is implemented by Rust’s built-in range types, produced by range syntax like .., a.., ..b, ..=c, d..e, or f..=g.

Required Methods

fn into_bounds(self: Self) -> (Bound<T>, Bound<T>)

Convert this range into the start and end bounds. Returns (start_bound, end_bound).

Examples

#![feature(range_into_bounds)]
use std::ops::Bound::*;
use std::ops::IntoBounds;

assert_eq!((0..5).into_bounds(), (Included(0), Excluded(5)));
assert_eq!((..=7).into_bounds(), (Unbounded, Included(7)));

Provided Methods

fn intersect<R>(self: Self, other: R) -> (Bound<T>, Bound<T>)
where
    Self: Sized,
    T: ~const Ord,
    R: Sized + ~const IntoBounds<T>

Compute the intersection of self and other.

Examples

#![feature(range_into_bounds)]
use std::ops::Bound::*;
use std::ops::IntoBounds;

assert_eq!((3..).intersect(..5), (Included(3), Excluded(5)));
assert_eq!((-12..387).intersect(0..256), (Included(0), Excluded(256)));
assert_eq!((1..5).intersect(..), (Included(1), Excluded(5)));
assert_eq!((1..=9).intersect(0..10), (Included(1), Included(9)));
assert_eq!((7..=13).intersect(8..13), (Included(8), Excluded(13)));

Combine with is_empty to determine if two ranges overlap.

#![feature(range_into_bounds)]
#![feature(range_bounds_is_empty)]
use std::ops::{RangeBounds, IntoBounds};

assert!(!(3..).intersect(..5).is_empty());
assert!(!(-12..387).intersect(0..256).is_empty());
assert!((1..5).intersect(6..).is_empty());

Implementors