pub enum Bound<T> { Included(T), Excluded(T), Unbounded, }
An endpoint of a range of keys.
Bounds are range endpoints:
Bound
use std::ops::Bound::*; use std::ops::RangeBounds; assert_eq!((..100).start_bound(), Unbounded); assert_eq!((1..12).start_bound(), Included(&1)); assert_eq!((1..12).end_bound(), Excluded(&12));
Using a tuple of Bounds as an argument to BTreeMap::range. Note that in most cases, it’s better to use range syntax (1..5) instead.
BTreeMap::range
1..5
use std::collections::BTreeMap; use std::ops::Bound::{Excluded, Included, Unbounded}; let mut map = BTreeMap::new(); map.insert(3, "a"); map.insert(5, "b"); map.insert(8, "c"); for (key, value) in map.range((Excluded(3), Included(8))) { println!("{key}: {value}"); } assert_eq!(Some((&3, &"a")), map.range((Unbounded, Included(5))).next());
An inclusive bound.
An exclusive bound.
An infinite endpoint. Indicates that there is no bound in this direction.
Converts from &Bound<T> to Bound<&T>.
&Bound<T>
Bound<&T>
bound_as_ref
Converts from &mut Bound<T> to Bound<&mut T>.
&mut Bound<T>
Bound<&mut T>
Maps a Bound<T> to a Bound<U> by applying a function to the contained value (including both Included and Excluded), returning a Bound of the same kind.
Bound<T>
Bound<U>
Included
Excluded
use std::ops::Bound::*; let bound_string = Included("Hello, World!"); assert_eq!(bound_string.map(|s| s.len()), Included(13));
use std::ops::Bound; use Bound::*; let unbounded_string: Bound<String> = Unbounded; assert_eq!(unbounded_string.map(|s| s.len()), Unbounded);
bound_copied
Map a Bound<&T> to a Bound<T> by copying the contents of the bound.
#![feature(bound_copied)] use std::ops::Bound::*; use std::ops::RangeBounds; assert_eq!((1..12).start_bound(), Included(&1)); assert_eq!((1..12).start_bound().copied(), Included(1));
Map a Bound<&T> to a Bound<T> by cloning the contents of the bound.
use std::ops::Bound::*; use std::ops::RangeBounds; let a1 = String::from("a"); let (a2, a3, a4) = (a1.clone(), a1.clone(), a1.clone()); assert_eq!(Included(&a1), (a2..).start_bound()); assert_eq!(Included(a3), (a4..).start_bound().cloned());
source
Hasher
self
other
==
!=
TypeId
clone_to_uninit
dest
Returns the argument unchanged.
Calls U::from(self).
U::from(self)
That is, this conversion is whatever the implementation of From<T> for U chooses to do.
From<T> for U