[−][src]Struct solana_libra_proptest_helpers::GrowingSubset
A set of elements, each with an associated key, that grows over time.
This is called GrowingSubset
because the universal set the subset grows from is provided
upfront. At any time, the items included form the current subset.
GrowingSubset
integrates with proptest
through the pick_item
and pick_value
methods.
Examples
use proptest_helpers::GrowingSubset; let items = vec![(1, "a"), (3, "c"), (2, "b"), (2, "d")]; let mut subset: GrowingSubset<_, _> = items.into_iter().collect(); assert_eq!(subset.total_len(), 4); assert_eq!(subset.len(), 0); assert_eq!(subset.current(), &[]); subset.advance_to(&2); assert_eq!(subset.len(), 1); assert_eq!(subset.current(), &[(1, "a")]); subset.advance_to(&4); assert_eq!(subset.len(), 4); assert_eq!(subset.current(), &[(1, "a"), (2, "b"), (2, "d"), (3, "c")]); subset.advance_to(&5); assert_eq!(subset.len(), 4); assert_eq!(subset.current(), &[(1, "a"), (2, "b"), (2, "d"), (3, "c")]);
Methods
impl<Ix, T> GrowingSubset<Ix, T> where
Ix: Ord,
[src]
Ix: Ord,
pub fn len(&self) -> usize
[src]
Returns the number of elements in the current subset.
See total_len
for the length of the universal set.
pub fn is_empty(&self) -> bool
[src]
Returns true
if the current subset contains no elements.
pub fn total_len(&self) -> usize
[src]
Returns the total number of elements in the universal set.
This remains fixed once the GrowingSubset
has been created.
pub fn current(&self) -> &[(Ix, T)]
[src]
Returns a slice containing the items in the current subset.
pub fn pick_item(&self, index: &Index) -> &(Ix, T)
[src]
Chooses an (index, value) pair from the current subset using the provided
Index
instance as the source of randomness.
pub fn pick_value(&self, index: &Index) -> &T
[src]
Chooses a value from the current subset using the provided
Index
instance as the source of randomness.
pub fn advance_to(&mut self, to_idx: &Ix)
[src]
Advances the valid subset to the provided index. After the end of this, the current subset
will contain all elements where the index is less than to_idx
.
If duplicate indexes exist, advance_to
will cause all of the corresponding items to be
included.
It is expected that advance_to
will be called with larger indexes over time.
Trait Implementations
impl<Ix: Clone, T: Clone> Clone for GrowingSubset<Ix, T>
[src]
fn clone(&self) -> GrowingSubset<Ix, T>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<Ix: Debug, T: Debug> Debug for GrowingSubset<Ix, T>
[src]
impl<Ix, T> FromIterator<(Ix, T)> for GrowingSubset<Ix, T> where
Ix: Ord,
[src]
Ix: Ord,
Constructs a GrowingSubset
from an iterator of (index, value) pairs.
The input does not need to be pre-sorted.
fn from_iter<I>(iter: I) -> Self where
I: IntoIterator<Item = (Ix, T)>,
[src]
I: IntoIterator<Item = (Ix, T)>,
Auto Trait Implementations
impl<Ix, T> Sync for GrowingSubset<Ix, T> where
Ix: Sync,
T: Sync,
Ix: Sync,
T: Sync,
impl<Ix, T> Send for GrowingSubset<Ix, T> where
Ix: Send,
T: Send,
Ix: Send,
T: Send,
impl<Ix, T> Unpin for GrowingSubset<Ix, T> where
Ix: Unpin,
T: Unpin,
Ix: Unpin,
T: Unpin,
impl<Ix, T> RefUnwindSafe for GrowingSubset<Ix, T> where
Ix: RefUnwindSafe,
T: RefUnwindSafe,
Ix: RefUnwindSafe,
T: RefUnwindSafe,
impl<Ix, T> UnwindSafe for GrowingSubset<Ix, T> where
Ix: UnwindSafe,
T: UnwindSafe,
Ix: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,