Skip to main content

Individual

Struct Individual 

Source
pub struct Individual {
Show 17 fields pub name: String, pub ascension: Option<u64>, pub environment: String, pub population: String, pub species: String, pub controller: Vec<String>, pub genome: OnceLock<Arc<[u8]>>, pub telemetry: HashMap<String, String>, pub epigenome: HashMap<String, String>, pub score: Option<String>, pub generation: u64, pub parents: Vec<String>, pub children: Vec<String>, pub birth_date: String, pub death_date: String, pub extra: HashMap<String, Value>, pub path: Option<PathBuf>,
}
Expand description

Container for a distinct life-form and all of its associated data.

Fields§

§name: String

Name or UUID of this individual.

§ascension: Option<u64>

Number of individuals who died before this one, or None if this individual has not yet died.

§environment: String

Name of the environment that this individual lives in.

§population: String

Name of the population that this individual belongs to.

§species: String

Name or UUID of this individual’s species. Mating may be restricted to individuals of the same species.

§controller: Vec<String>

Command line invocation of the controller program.

§genome: OnceLock<Arc<[u8]>>

Genetic parameters for this individual.

§telemetry: HashMap<String, String>

The environmental info dictionary. The environment updates this information.

§epigenome: HashMap<String, String>

The epigenetic info dictionary. The controller updates this information.

§score: Option<String>

Reproductive fitness of this individual, as assessed by the environment.

§generation: u64

Number of cohorts that passed before this individual was born.

§parents: Vec<String>

The names of this individual’s parents.

§children: Vec<String>

The names of this individual’s children.

§birth_date: String

Time of birth, as a UTC timestamp, or an empty string if this individual has not yet been born.

§death_date: String

Time of death, as a UTC timestamp, or an empty string if this individual has not yet died.

§extra: HashMap<String, Value>

Custom / unofficial fields that are saved with the individual.

§path: Option<PathBuf>

The file path this individual was loaded from or saved to, or None if this individual has not touched the file system.

Implementations§

Source§

impl Individual

Source

pub fn new( environment: &str, population: &str, controller: &[&str], genome: Box<[u8]>, ) -> Individual

Create a new individual.

Source

pub fn genome(&self) -> Arc<[u8]>

Get the genetic parameters for this individual. This loads the genome from file if necessary.

Source

pub fn asex(&mut self, child_genome: &[u8]) -> Individual

Asexually reproduce an individual.

Source

pub fn sex(&mut self, other: &mut Individual, child_genome: &[u8]) -> Individual

Sexually reproduce two individuals.

Source

pub fn save(&mut self, path: impl AsRef<Path>) -> Result<&Path, Error>

Save an individual to a file.

Argument path is the directory to save in. Optional, use empty string for temporary file. The filename will be the individual’s name with the “.indiv” file extension.

Returns the file path of the saved individual.

Source

pub fn load(path: impl AsRef<Path>) -> Result<Individual, Error>

Load a previously saved individual.

Source

pub fn load_dir(path: impl AsRef<Path>) -> Result<Vec<Individual>, Error>

Get all individuals saved in a directory.

Source

pub fn delete(self) -> Result<(), Error>

Remove this individual and its associated save file.

Source

pub fn drop(this: Arc<Mutex<Self>>) -> Result<(), Error>

Delete the individual if this is the last reference to it.

Trait Implementations§

Source§

impl Clone for Individual

Source§

fn clone(&self) -> Individual

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Individual

Source§

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

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

impl<'de> Deserialize<'de> for Individual

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Individual

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 Serialize for Individual

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Individual

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<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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