Type Alias bao_tree::ChunkRangesRef
source · pub type ChunkRangesRef = RangeSetRef<ChunkNum>;Expand description
A referenceable set of chunk ranges
ChunkRanges implements AsRef
Aliased Type§
struct ChunkRangesRef(/* private fields */);Implementations§
source§impl<T> RangeSetRef<T>
impl<T> RangeSetRef<T>
sourcepub const fn empty() -> &'static RangeSetRef<T>
pub const fn empty() -> &'static RangeSetRef<T>
Create a new range set reference for an empty range set
sourcepub const fn single(value: &T) -> &RangeSetRef<T>
pub const fn single(value: &T) -> &RangeSetRef<T>
Create a new range set reference for a single value
sourcepub fn new(boundaries: &[T]) -> Option<&RangeSetRef<T>>where
T: Ord,
pub fn new(boundaries: &[T]) -> Option<&RangeSetRef<T>>where T: Ord,
Create a new range set reference
This performs a check that the boundaries are strictly sorted.
If you want to avoid this check, use new_unchecked
(behind a feature flag because it is unsafe)
sourcepub fn split(&self, at: T) -> (&RangeSetRef<T>, &RangeSetRef<T>)where
T: Ord,
pub fn split(&self, at: T) -> (&RangeSetRef<T>, &RangeSetRef<T>)where T: Ord,
Split this range set into two parts left, right at position at,
so that left is identical to self for all x < at
and right is identical to self for all x >= at.
More precisely: contains(left, x) == contains(ranges, x) for x < at contains(right, x) == contains(ranges, x) for x >= at
This is not the same as limiting the ranges to the left or right of
at, but it is much faster. It requires just a binary search and no
allocations.
sourcepub const fn new_unchecked(boundaries: &[T]) -> &RangeSetRef<T>
pub const fn new_unchecked(boundaries: &[T]) -> &RangeSetRef<T>
Create a new range set reference without checking that the boundaries are strictly sorted.
sourcepub const fn boundaries(&self) -> &[T]
pub const fn boundaries(&self) -> &[T]
The boundaries of the range set, guaranteed to be strictly sorted
sourcepub fn contains(&self, value: &T) -> boolwhere
T: Ord,
pub fn contains(&self, value: &T) -> boolwhere T: Ord,
true if the value is contained in the range set
sourcepub fn is_all(&self) -> boolwhere
T: RangeSetEntry,
pub fn is_all(&self) -> boolwhere T: RangeSetEntry,
true if the range set contains all values
sourcepub fn intersects(&self, that: &RangeSetRef<T>) -> boolwhere
T: Ord,
pub fn intersects(&self, that: &RangeSetRef<T>) -> boolwhere T: Ord,
true if this range set intersects from another range set
This is just the opposite of is_disjoint, but is provided for
better discoverability.
sourcepub fn is_disjoint(&self, that: &RangeSetRef<T>) -> boolwhere
T: Ord,
pub fn is_disjoint(&self, that: &RangeSetRef<T>) -> boolwhere T: Ord,
true if this range set is disjoint from another range set
sourcepub fn is_subset(&self, that: &RangeSetRef<T>) -> boolwhere
T: Ord,
pub fn is_subset(&self, that: &RangeSetRef<T>) -> boolwhere T: Ord,
true if this range set is a superset of another range set
A range set is considered to be a superset of itself
sourcepub fn is_superset(&self, that: &RangeSetRef<T>) -> boolwhere
T: Ord,
pub fn is_superset(&self, that: &RangeSetRef<T>) -> boolwhere T: Ord,
true if this range set is a subset of another range set
A range set is considered to be a subset of itself
sourcepub fn intersection<A>(&self, that: &RangeSetRef<T>) -> RangeSet<A>where
A: Array<Item = T>,
T: Ord + Clone,
pub fn intersection<A>(&self, that: &RangeSetRef<T>) -> RangeSet<A>where A: Array<Item = T>, T: Ord + Clone,
intersection
sourcepub fn union<A>(&self, that: &RangeSetRef<T>) -> RangeSet<A>where
A: Array<Item = T>,
T: Ord + Clone,
pub fn union<A>(&self, that: &RangeSetRef<T>) -> RangeSet<A>where A: Array<Item = T>, T: Ord + Clone,
union
sourcepub fn difference<A>(&self, that: &RangeSetRef<T>) -> RangeSet<A>where
A: Array<Item = T>,
T: Ord + Clone,
pub fn difference<A>(&self, that: &RangeSetRef<T>) -> RangeSet<A>where A: Array<Item = T>, T: Ord + Clone,
difference
sourcepub fn symmetric_difference<A>(&self, that: &RangeSetRef<T>) -> RangeSet<A>where
A: Array<Item = T>,
T: Ord + Clone,
pub fn symmetric_difference<A>(&self, that: &RangeSetRef<T>) -> RangeSet<A>where A: Array<Item = T>, T: Ord + Clone,
symmetric difference (xor)
Trait Implementations§
source§impl<T> Debug for RangeSetRef<T>where
T: Debug,
impl<T> Debug for RangeSetRef<T>where T: Debug,
source§impl<T> Ord for RangeSetRef<T>where
T: Ord,
impl<T> Ord for RangeSetRef<T>where T: Ord,
source§impl<T> PartialEq<RangeSetRef<T>> for RangeSetRef<T>where
T: PartialEq<T>,
impl<T> PartialEq<RangeSetRef<T>> for RangeSetRef<T>where T: PartialEq<T>,
source§fn eq(&self, other: &RangeSetRef<T>) -> bool
fn eq(&self, other: &RangeSetRef<T>) -> bool
self and other values to be equal, and is used
by ==.source§impl<T> PartialOrd<RangeSetRef<T>> for RangeSetRef<T>where
T: PartialOrd<T>,
impl<T> PartialOrd<RangeSetRef<T>> for RangeSetRef<T>where T: PartialOrd<T>,
source§fn partial_cmp(&self, other: &RangeSetRef<T>) -> Option<Ordering>
fn partial_cmp(&self, other: &RangeSetRef<T>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self and other) and is used by the <=
operator. Read more