Struct math::set::ordered_integer_set::OrderedIntegerSet
source · pub struct OrderedIntegerSet<E: Integer + Copy + ToPrimitive> { /* private fields */ }
Expand description
An OrderedIntegerSet
consists of a sequence of ContiguousIntegerSet
that
are sorted in ascending order where successive intervals are not
coalesceable, i.e., if intervals A and B are successive intervals, then
A.end + 1 < B.start
E.g. An OrderedIntegerSet
containing ContiguousIntegerSet
s [2,3] and
[5,7] will represent the set of integers {2, 3, 5, 6, 7}
Implementations§
source§impl<E: Integer + Copy + ToPrimitive> OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> OrderedIntegerSet<E>
pub fn new() -> OrderedIntegerSet<E>
sourcepub fn from_slice(slice: &[[E; 2]]) -> OrderedIntegerSet<E>
pub fn from_slice(slice: &[[E; 2]]) -> OrderedIntegerSet<E>
Creates an OrderedIntegerSet
where the i-th interval is represented by
the i-th two-element array in slice
.
E.g. [[2, 3], [5, 7]] will create an OrderedIntegerSet
representing
{2, 3, 5, 6, 7}, where the contiguous integers are stored as
ContiguousIntegerSet
s
Note that the intervals in the slice
parameters do not have to be
sorted or non-overlapping.
pub fn from_contiguous_integer_sets( sets: Vec<ContiguousIntegerSet<E>> ) -> OrderedIntegerSet<E>
pub fn from_ordered_coalesced_contiguous_integer_sets( sets: Vec<ContiguousIntegerSet<E>> ) -> OrderedIntegerSet<E>
sourcepub fn first(&self) -> Option<E>
pub fn first(&self) -> Option<E>
Returns the smallest element in the set e.g. {[1,3], [4,8]} -> 1
sourcepub fn last(&self) -> Option<E>
pub fn last(&self) -> Option<E>
Returns the largest element in the set e.g. {[1,3], [4,8]} -> 8
pub fn is_empty(&self) -> bool
sourcepub fn first_and_last(&self) -> Option<(E, E)>
pub fn first_and_last(&self) -> Option<(E, E)>
Returns both the smallest and the largest element in the set e.g. {[1,3], [4,8]} -> the tuple (1, 8)
sourcepub fn slice<'a, I: Slicing<&'a OrderedIntegerSet<E>, OrderedIntegerSet<E>>>(
&'a self,
slicer: I
) -> OrderedIntegerSet<E>
pub fn slice<'a, I: Slicing<&'a OrderedIntegerSet<E>, OrderedIntegerSet<E>>>( &'a self, slicer: I ) -> OrderedIntegerSet<E>
The slicer
can be any struct that implements the Slicing
trait.
For example, the Slicing
trait has been implemented for the
Range<usize>
struct.
For an OrderedIntegerSet
containing n elements, the Range<usize>
object created by a..b
will slice the integer set and return all
the elements from the a-th (inclusive) to the b-th (exclusive) in
the form of an OrderedIntegerSet
pub fn to_non_empty_intervals(&self) -> Self
pub fn into_non_empty_intervals(self) -> Self
pub fn remove_empty_intervals(&mut self)
pub fn get_intervals_by_ref(&self) -> &Vec<ContiguousIntegerSet<E>>
pub fn into_intervals(self) -> Vec<ContiguousIntegerSet<E>>
pub fn intervals_iter(&self) -> Iter<'_, ContiguousIntegerSet<E>>
pub fn num_intervals(&self) -> usize
Trait Implementations§
source§impl<E: Clone + Integer + Copy + ToPrimitive> Clone for OrderedIntegerSet<E>
impl<E: Clone + Integer + Copy + ToPrimitive> Clone for OrderedIntegerSet<E>
source§fn clone(&self) -> OrderedIntegerSet<E>
fn clone(&self) -> OrderedIntegerSet<E>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<E> CoalesceIntervals<ContiguousIntegerSet<E>, E> for OrderedIntegerSet<E>
impl<E> CoalesceIntervals<ContiguousIntegerSet<E>, E> for OrderedIntegerSet<E>
fn to_coalesced_intervals(&self) -> Vec<ContiguousIntegerSet<E>>
fn coalesce_intervals_inplace(&mut self)
fn into_coalesced(self) -> Self
source§impl<E: Integer + Copy + ToPrimitive> Collecting<E> for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Collecting<E> for OrderedIntegerSet<E>
source§impl<E: Debug + Integer + Copy + ToPrimitive> Debug for OrderedIntegerSet<E>
impl<E: Debug + Integer + Copy + ToPrimitive> Debug for OrderedIntegerSet<E>
source§impl<E: Integer + Copy + ToPrimitive> Default for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Default for OrderedIntegerSet<E>
source§impl<E: Integer + Copy + Sum + ToPrimitive> Finite for OrderedIntegerSet<E>
impl<E: Integer + Copy + Sum + ToPrimitive> Finite for OrderedIntegerSet<E>
source§impl<E: Integer + Copy + ToPrimitive> From<OrderedIntegerSet<E>> for IntegerSetIter<E>
impl<E: Integer + Copy + ToPrimitive> From<OrderedIntegerSet<E>> for IntegerSetIter<E>
source§fn from(ordered_integer_set: OrderedIntegerSet<E>) -> IntegerSetIter<E> ⓘ
fn from(ordered_integer_set: OrderedIntegerSet<E>) -> IntegerSetIter<E> ⓘ
source§impl<E: Integer + Copy + ToPrimitive> From<Vec<ContiguousIntegerSet<E>>> for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> From<Vec<ContiguousIntegerSet<E>>> for OrderedIntegerSet<E>
source§fn from(intervals: Vec<ContiguousIntegerSet<E>>) -> OrderedIntegerSet<E>
fn from(intervals: Vec<ContiguousIntegerSet<E>>) -> OrderedIntegerSet<E>
source§impl<E> Intersect<&ContiguousIntegerSet<E>, OrderedIntegerSet<E>> for OrderedIntegerSet<E>
impl<E> Intersect<&ContiguousIntegerSet<E>, OrderedIntegerSet<E>> for OrderedIntegerSet<E>
fn intersect(&self, other: &ContiguousIntegerSet<E>) -> OrderedIntegerSet<E>
fn has_non_empty_intersection_with( &self, other: &ContiguousIntegerSet<E> ) -> bool
source§impl<E: Integer + Copy + ToPrimitive> Intersect<&OrderedIntegerSet<E>, OrderedIntegerSet<E>> for ContiguousIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Intersect<&OrderedIntegerSet<E>, OrderedIntegerSet<E>> for ContiguousIntegerSet<E>
fn intersect(&self, other: &OrderedIntegerSet<E>) -> OrderedIntegerSet<E>
fn has_non_empty_intersection_with(&self, other: &OrderedIntegerSet<E>) -> bool
source§impl<E> Intersect<&OrderedIntegerSet<E>, OrderedIntegerSet<E>> for OrderedIntegerSet<E>
impl<E> Intersect<&OrderedIntegerSet<E>, OrderedIntegerSet<E>> for OrderedIntegerSet<E>
fn intersect(&self, other: &OrderedIntegerSet<E>) -> OrderedIntegerSet<E>
fn has_non_empty_intersection_with(&self, other: &OrderedIntegerSet<E>) -> bool
source§impl<E: PartialEq + Integer + Copy + ToPrimitive> PartialEq for OrderedIntegerSet<E>
impl<E: PartialEq + Integer + Copy + ToPrimitive> PartialEq for OrderedIntegerSet<E>
source§fn eq(&self, other: &OrderedIntegerSet<E>) -> bool
fn eq(&self, other: &OrderedIntegerSet<E>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<E> Sample<'_, ContiguousIntegerSetIter<E>, E, OrderedIntegerSet<E>> for ContiguousIntegerSet<E>
impl<E> Sample<'_, ContiguousIntegerSetIter<E>, E, OrderedIntegerSet<E>> for ContiguousIntegerSet<E>
source§fn sample_subset_without_replacement<'s: 'a>(
&'s self,
size: usize
) -> Result<O, String>
fn sample_subset_without_replacement<'s: 'a>( &'s self, size: usize ) -> Result<O, String>
size
elements without replacement
size
: the number of samples to be drawn
returns Err if size
is larger than the population sizefn sample_with_replacement<'s: 'a>(&'s self, size: usize) -> Result<O, String>
source§impl<E> Sample<'_, IntegerSetIter<E>, E, OrderedIntegerSet<E>> for OrderedIntegerSet<E>
impl<E> Sample<'_, IntegerSetIter<E>, E, OrderedIntegerSet<E>> for OrderedIntegerSet<E>
source§fn sample_subset_without_replacement<'s: 'a>(
&'s self,
size: usize
) -> Result<O, String>
fn sample_subset_without_replacement<'s: 'a>( &'s self, size: usize ) -> Result<O, String>
size
elements without replacement
size
: the number of samples to be drawn
returns Err if size
is larger than the population sizefn sample_with_replacement<'s: 'a>(&'s self, size: usize) -> Result<O, String>
source§impl<E: Integer + Copy + ToPrimitive> Set<E> for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Set<E> for OrderedIntegerSet<E>
source§impl<E> Slicing<&OrderedIntegerSet<E>, OrderedIntegerSet<E>> for Range<usize>
impl<E> Slicing<&OrderedIntegerSet<E>, OrderedIntegerSet<E>> for Range<usize>
source§fn slice(self, input: &OrderedIntegerSet<E>) -> OrderedIntegerSet<E>
fn slice(self, input: &OrderedIntegerSet<E>) -> OrderedIntegerSet<E>
the end
index is exclusive
source§impl<E: Integer + Copy + ToPrimitive> Sub<&ContiguousIntegerSet<E>> for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Sub<&ContiguousIntegerSet<E>> for OrderedIntegerSet<E>
§type Output = OrderedIntegerSet<E>
type Output = OrderedIntegerSet<E>
-
operator.source§impl<E: Integer + Copy + ToPrimitive> Sub<&OrderedIntegerSet<E>> for ContiguousIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Sub<&OrderedIntegerSet<E>> for ContiguousIntegerSet<E>
§type Output = OrderedIntegerSet<E>
type Output = OrderedIntegerSet<E>
-
operator.source§impl<E: Integer + Copy + ToPrimitive> Sub<&OrderedIntegerSet<E>> for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Sub<&OrderedIntegerSet<E>> for OrderedIntegerSet<E>
§type Output = OrderedIntegerSet<E>
type Output = OrderedIntegerSet<E>
-
operator.source§impl<E: Integer + Copy + ToPrimitive> Sub<ContiguousIntegerSet<E>> for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Sub<ContiguousIntegerSet<E>> for OrderedIntegerSet<E>
§type Output = OrderedIntegerSet<E>
type Output = OrderedIntegerSet<E>
-
operator.source§impl<E: Integer + Copy + ToPrimitive> Sub<OrderedIntegerSet<E>> for ContiguousIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Sub<OrderedIntegerSet<E>> for ContiguousIntegerSet<E>
§type Output = OrderedIntegerSet<E>
type Output = OrderedIntegerSet<E>
-
operator.source§impl<E: Integer + Copy + ToPrimitive> Sub for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> Sub for OrderedIntegerSet<E>
§type Output = OrderedIntegerSet<E>
type Output = OrderedIntegerSet<E>
-
operator.source§impl<E: Integer + Copy + ToPrimitive> SubAssign<&ContiguousIntegerSet<E>> for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> SubAssign<&ContiguousIntegerSet<E>> for OrderedIntegerSet<E>
source§fn sub_assign(&mut self, rhs: &ContiguousIntegerSet<E>)
fn sub_assign(&mut self, rhs: &ContiguousIntegerSet<E>)
-=
operation. Read moresource§impl<E: Integer + Copy + ToPrimitive> SubAssign<&OrderedIntegerSet<E>> for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> SubAssign<&OrderedIntegerSet<E>> for OrderedIntegerSet<E>
source§fn sub_assign(&mut self, rhs: &OrderedIntegerSet<E>)
fn sub_assign(&mut self, rhs: &OrderedIntegerSet<E>)
-=
operation. Read moresource§impl<E: Integer + Copy + ToPrimitive> SubAssign<ContiguousIntegerSet<E>> for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> SubAssign<ContiguousIntegerSet<E>> for OrderedIntegerSet<E>
source§fn sub_assign(&mut self, rhs: ContiguousIntegerSet<E>)
fn sub_assign(&mut self, rhs: ContiguousIntegerSet<E>)
-=
operation. Read moresource§impl<E: Integer + Copy + ToPrimitive> SubAssign for OrderedIntegerSet<E>
impl<E: Integer + Copy + ToPrimitive> SubAssign for OrderedIntegerSet<E>
source§fn sub_assign(&mut self, rhs: OrderedIntegerSet<E>)
fn sub_assign(&mut self, rhs: OrderedIntegerSet<E>)
-=
operation. Read more