pub trait EachCrateIndividual {
type Item;
// Required methods
fn new(individual: &Rc<Individual<Self::Item>>) -> Self;
fn get_individual(&self) -> &Individual<Self::Item>;
// Provided methods
fn get_id(&self) -> usize { ... }
fn get_value(&self) -> &Self::Item { ... }
}
Expand description
A trait for inividual defined by each crete.
A struct implmented this must have Rc<Individual<T>>
.
T
- A type of value.
§Example
use std::rc::Rc;
use scarlet_queen_core::each_individual::{Individual, EachCrateIndividual};
#[derive(PartialEq, Eq, Debug)]
struct SampleIndividual(Rc<Individual<u8>>);
impl EachCrateIndividual for SampleIndividual {
type Item = u8;
fn new(individual: &Rc<Individual<Self::Item>>) -> Self {
SampleIndividual(Rc::clone(&individual))
}
fn get_individual(&self) -> &Individual<Self::Item> {
self.0.as_ref()
}
}
let r: Rc<Individual<u8>> = Rc::new(Individual::new(5u8));
let sample: SampleIndividual = SampleIndividual::new(&r);
assert_eq!(sample.get_individual(), r.as_ref());
assert_eq!(sample.get_id(), r.get_id());
assert_eq!(sample.get_value(), r.get_value());
Required Associated Types§
Required Methods§
Sourcefn new(individual: &Rc<Individual<Self::Item>>) -> Self
fn new(individual: &Rc<Individual<Self::Item>>) -> Self
Make individual from base individual.
individual
- A base individual.
Sourcefn get_individual(&self) -> &Individual<Self::Item>
fn get_individual(&self) -> &Individual<Self::Item>
Get this individual.
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.