pub trait IntoBounds<T>: RangeBounds<T> {
// Required method
fn into_bounds(self) -> (Bound<T>, Bound<T>);
// Provided method
fn intersect<R>(self, other: R) -> (Bound<T>, Bound<T>)
where Self: Sized,
T: Ord,
R: Sized + IntoBounds<T> { ... }
}
🔬This is a nightly-only experimental API. (
range_into_bounds
#136903)Expand description
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§
Provided Methods§
Sourcefn intersect<R>(self, other: R) -> (Bound<T>, Bound<T>)
🔬This is a nightly-only experimental API. (range_into_bounds
#136903)
fn intersect<R>(self, other: R) -> (Bound<T>, Bound<T>)
range_into_bounds
#136903)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.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.