SelectionOrder

Enum SelectionOrder 

Source
pub enum SelectionOrder {
    Inherit,
    Original,
    Random,
    Shuffled,
    Sorted,
    Probabilistic,
}
Expand description

Defines the order in which elements are selected from a selector.

This enum controls how entities, values, or moves are ordered when iterating through a selector.

Variants§

§

Inherit

Inherit the selection order from the parent configuration.

If the parent is cached, defaults to Original. If there is no parent, defaults to Random.

§

Original

Select elements in their original order.

Elements are returned in the order they appear in the underlying collection. This is deterministic and reproducible.

§

Random

Select elements in random order without shuffling.

Elements are selected randomly from the pool on each call to next(). The same element may be selected multiple times. This scales well because it does not require caching.

§

Shuffled

Select elements in random order by shuffling.

Elements are shuffled when a selection iterator is created. Each element will be selected exactly once (if all elements are consumed). Requires caching (at least step-level).

§

Sorted

Select elements in sorted order.

Elements are sorted according to a sorter before iteration. Each element will be selected exactly once (if all elements are consumed). Requires caching (at least step-level).

§

Probabilistic

Select elements based on probability weights.

Elements with higher probability have a greater chance of being selected. The same element may be selected multiple times. Requires caching (at least step-level).

Implementations§

Source§

impl SelectionOrder

Source

pub fn resolve(self, inherited: SelectionOrder) -> SelectionOrder

Resolves the selection order by inheriting from a parent if necessary.

§Arguments
  • inherited - The selection order to inherit from if this is Inherit
§Returns

The resolved selection order (never Inherit)

Source

pub fn is_random(&self) -> bool

Returns true if this selection order implies random selection.

This is used to determine whether a selector should use random iteration or deterministic iteration.

Source

pub fn requires_caching(&self) -> bool

Returns true if this selection order requires caching.

Some selection orders need to collect all elements before iteration can begin (e.g., Shuffled, Sorted, Probabilistic).

Source

pub fn from_random_selection(random: bool) -> Self

Converts from a boolean random selection flag.

§Arguments
  • random - true for Random, false for Original
Source

pub fn to_random_selection(&self) -> bool

Converts to a boolean random selection flag.

§Panics

Panics if this is not Random or Original.

Trait Implementations§

Source§

impl Clone for SelectionOrder

Source§

fn clone(&self) -> SelectionOrder

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SelectionOrder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SelectionOrder

Source§

fn default() -> SelectionOrder

Returns the “default value” for a type. Read more
Source§

impl Hash for SelectionOrder

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for SelectionOrder

Source§

fn eq(&self, other: &SelectionOrder) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for SelectionOrder

Source§

impl Eq for SelectionOrder

Source§

impl StructuralPartialEq for SelectionOrder

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more