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: 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
.
range_into_bounds
#136903)
Convert this range into the start and end bounds. Returns (start_bound, end_bound)
.
#![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)));
Source ð¬This is a nightly-only experimental API. (range_into_bounds
#136903)
Compute the intersection of self
and other
.
#![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());
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4