core::range

Trait RangeBounds

Source
pub trait RangeBounds<T: ?Sized> {
    // Required methods
    fn start_bound(&self) -> Bound<&T>;
    fn end_bound(&self) -> Bound<&T>;

    // Provided method
    fn contains<U>(&self, item: &U) -> bool
       where T: PartialOrd<U>,
             U: ?Sized + PartialOrd<T> { ... }
}
馃敩This is a nightly-only experimental API. (new_range_api #125687)
Expand description

RangeBounds is implemented by Rust鈥檚 built-in range types, produced by range syntax like .., a.., ..b, ..=c, d..e, or f..=g.

Required Methods

Source

fn start_bound(&self) -> Bound<&T>

馃敩This is a nightly-only experimental API. (new_range_api #125687)

Start index bound.

Returns the start value as a Bound.

Examples
use std::ops::Bound::*;
use std::ops::RangeBounds;

assert_eq!((..10).start_bound(), Unbounded);
assert_eq!((3..10).start_bound(), Included(&3));
Source

fn end_bound(&self) -> Bound<&T>

馃敩This is a nightly-only experimental API. (new_range_api #125687)

End index bound.

Returns the end value as a Bound.

Examples
use std::ops::Bound::*;
use std::ops::RangeBounds;

assert_eq!((3..).end_bound(), Unbounded);
assert_eq!((3..10).end_bound(), Excluded(&10));

Provided Methods

Source

fn contains<U>(&self, item: &U) -> bool
where T: PartialOrd<U>, U: ?Sized + PartialOrd<T>,

馃敩This is a nightly-only experimental API. (new_range_api #125687)

Returns true if item is contained in the range.

Examples
assert!( (3..5).contains(&4));
assert!(!(3..5).contains(&2));

assert!( (0.0..1.0).contains(&0.5));
assert!(!(0.0..1.0).contains(&f32::NAN));
assert!(!(0.0..f32::NAN).contains(&0.5));
assert!(!(f32::NAN..1.0).contains(&0.5));

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.

Implementors

1.28.0Source

impl<'a, T: ?Sized + 'a> RangeBounds<T> for (Bound<&'a T>, Bound<&'a T>)

1.28.0Source

impl<T> RangeBounds<T> for (Bound<T>, Bound<T>)

1.28.0Source

impl<T> RangeBounds<T> for core::ops::Range<&T>

1.28.0Source

impl<T> RangeBounds<T> for core::ops::Range<T>

1.28.0Source

impl<T> RangeBounds<T> for core::ops::RangeFrom<&T>

1.28.0Source

impl<T> RangeBounds<T> for core::ops::RangeFrom<T>

1.28.0Source

impl<T> RangeBounds<T> for core::ops::RangeInclusive<&T>

1.28.0Source

impl<T> RangeBounds<T> for core::ops::RangeInclusive<T>

1.28.0Source

impl<T> RangeBounds<T> for RangeTo<&T>

1.28.0Source

impl<T> RangeBounds<T> for RangeTo<T>

1.28.0Source

impl<T> RangeBounds<T> for RangeToInclusive<&T>

1.28.0Source

impl<T> RangeBounds<T> for RangeToInclusive<T>

Source

impl<T> RangeBounds<T> for core::range::Range<&T>

Source

impl<T> RangeBounds<T> for core::range::Range<T>

Source

impl<T> RangeBounds<T> for core::range::RangeFrom<&T>

Source

impl<T> RangeBounds<T> for core::range::RangeFrom<T>

Source

impl<T> RangeBounds<T> for core::range::RangeInclusive<&T>

Source

impl<T> RangeBounds<T> for core::range::RangeInclusive<T>

1.28.0Source

impl<T: ?Sized> RangeBounds<T> for RangeFull