Trait genotype::RangedParam [−][src]
pub trait RangedParam { fn get(&self) -> Param; fn get_mut(&mut self) -> &mut Param; fn range(&self) -> (Param, Param) { ... } fn get_scaled(&self) -> Param { ... } }
Access to a gene's scaled value, i.e. the phenotype.
The unscaled value is clamped between 0.0 and 1.0.
Examples
struct Weight(Param); // kg impl RangedParam for Weight { fn range(&self) -> (Param, Param) { (40.0, 100.0) // arbitrary weight range } fn get(&self) -> Param { self.0 } fn get_mut(&mut self) -> &mut Param {&mut self.0} } let mut weight = Weight(0.5); assert_eq!(weight.get(), 0.5); assert_eq!(weight.get_scaled(), 70.0); // mutate the genotype a tad *weight.get_mut() += 0.05; assert_eq!(weight.get(), 0.55); assert_eq!(weight.get_scaled(), 73.0);
Required Methods
fn get(&self) -> Param
Returns the unscaled parameter value.
fn get_mut(&mut self) -> &mut Param
Returns a mutable reference to the raw parameter value.
Provided Methods
fn range(&self) -> (Param, Param)
The range of allowed values, in the form (min, max).
Examples
The value in phenotype space remains between 0 and 1 (default implementation):
fn range(&self) -> (Param, Param) { (0.0, 1.0) }
The phenotype value is between 100 and 200:
fn range(&self) -> (Param, Param) { (100.0, 200.0) }
fn get_scaled(&self) -> Param
Returns the parameter value scaled to the range returned by range i.e. the gene expressed in the phenotype.
Trait Implementations
impl<'a> AddAssign<Param> for &'a mut RangedParam
[src]
impl<'a> AddAssign<Param> for &'a mut RangedParam
fn add_assign(&mut self, rhs: Param)
[src]
fn add_assign(&mut self, rhs: Param)
Performs the +=
operation.