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> { ... }
}
Expand description
RangeBounds
由 Rust 的内置范围类型实现,由 ..
、a..
、..b
、..=c
、d..e
或 f..=g
等范围语法生成。
开始索引绑定。
以 Bound
形式返回起始值。
use std::ops::Bound::*;
use std::ops::RangeBounds;
assert_eq!((..10).start_bound(), Unbounded);
assert_eq!((3..10).start_bound(), Included(&3));
Run
结束索引绑定。
将结束值返回为 Bound
。
use std::ops::Bound::*;
use std::ops::RangeBounds;
assert_eq!((3..).end_bound(), Unbounded);
assert_eq!((3..10).end_bound(), Excluded(&10));
Run
如果范围中包含 item
,则返回 true
。
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));
Run