Enum ChoiceValue
pub enum ChoiceValue {
F64(f64),
I64(i64),
U64(u64),
Usize(usize),
Bool(bool),
}Expand description
Type-safe storage for values from different distribution types.
ChoiceValue enables traces to store values from any supported distribution while maintaining type safety. Each variant corresponds to a distribution return type, preventing runtime type errors.
Example:
// Different value types from distributions
let continuous = ChoiceValue::F64(3.14159); // Normal, Uniform, etc.
let discrete = ChoiceValue::U64(42); // Poisson, Binomial
let categorical = ChoiceValue::Usize(2); // Categorical selection
let binary = ChoiceValue::Bool(true); // Bernoulli outcome
// Type-safe extraction
assert_eq!(continuous.as_f64(), Some(3.14159));
assert_eq!(discrete.as_u64(), Some(42));
assert_eq!(binary.as_bool(), Some(true));
// Type mismatches return None
assert_eq!(continuous.as_bool(), None);Variants§
F64(f64)
Floating-point value (continuous distributions).
I64(i64)
Signed integer value.
U64(u64)
Unsigned integer value (Poisson, Binomial counts).
Usize(usize)
Array index value (Categorical choices).
Bool(bool)
Boolean value (Bernoulli outcomes).
Implementations§
§impl ChoiceValue
impl ChoiceValue
pub fn as_f64(&self) -> Option<f64>
pub fn as_f64(&self) -> Option<f64>
Try to extract an f64 value, returning None if the type doesn’t match.
pub fn as_bool(&self) -> Option<bool>
pub fn as_bool(&self) -> Option<bool>
Try to extract a bool value, returning None if the type doesn’t match.
pub fn as_u64(&self) -> Option<u64>
pub fn as_u64(&self) -> Option<u64>
Try to extract a u64 value, returning None if the type doesn’t match.
pub fn as_usize(&self) -> Option<usize>
pub fn as_usize(&self) -> Option<usize>
Try to extract a usize value, returning None if the type doesn’t match.
Trait Implementations§
§impl Clone for ChoiceValue
impl Clone for ChoiceValue
§fn clone(&self) -> ChoiceValue
fn clone(&self) -> ChoiceValue
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read more§impl Debug for ChoiceValue
impl Debug for ChoiceValue
§impl PartialEq for ChoiceValue
impl PartialEq for ChoiceValue
impl StructuralPartialEq for ChoiceValue
Auto Trait Implementations§
impl Freeze for ChoiceValue
impl RefUnwindSafe for ChoiceValue
impl Send for ChoiceValue
impl Sync for ChoiceValue
impl Unpin for ChoiceValue
impl UnsafeUnpin for ChoiceValue
impl UnwindSafe for ChoiceValue
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.