Skip to main content

CellularAutomaton

Struct CellularAutomaton 

Source
pub struct CellularAutomaton {
    pub x: usize,
    pub y: usize,
    pub cells: Vec<Vec<i32>>,
    pub cell_processor: fn(&Self, usize, usize) -> i32,
    /* private fields */
}

Fields§

§x: usize§y: usize§cells: Vec<Vec<i32>>

Field of simulation with self.x and self.y dimensions.

§cell_processor: fn(&Self, usize, usize) -> i32

Implementations§

Source§

impl CellularAutomaton

Construction

Source

pub fn new(x: usize, y: usize) -> CellularAutomaton

§Constructor with the given dimensions and default (Conway’s game of life) processor.
Source

pub fn new_with_processor( x: usize, y: usize, processor: fn(c: &CellularAutomaton, x: usize, y: usize) -> i32, ) -> CellularAutomaton

§Constructor with the given dimensions and proccesing lambda.
Source

pub fn set_processor( &mut self, processor: fn(c: &CellularAutomaton, x: usize, y: usize) -> i32, ) -> &mut Self

§Sets the cell processor lambda for the automaton.

processor: fn(C:&CellularAutomaton, X:usize, Y:usize) -> NextState:i32


Allows to use multiple strategies for one field, by swapping cell_processor instead of cloning or moving matrices between automatons.

Source§

impl CellularAutomaton

Core processing

Source

pub fn next(&self, x: usize, y: usize) -> i32

Processes the next state of one cell by coordinates via lambda processor self.cell_processor.

Source

pub fn step(&mut self) -> &mut Self

Processes field with rayon borrowing unmutable self to self.cell_processor.

Source

pub fn steps(&mut self, steps: u64) -> &mut Self

Method to process multiple steps of the automaton as one call.

Will be more useful in FFI. But still solves convenience of using.

Source§

impl CellularAutomaton

Field fillings

Source

pub fn randomize(&mut self) -> &mut Self

TODO: Add randomize strat

Source

pub fn randomize_prob(&mut self, alive_probability: f64) -> &mut Self

Source

pub fn set_xy(&mut self, x: usize, y: usize, init_state: i32) -> &mut Self

§Sets the size of the automaton and initializes all cells with the given state.

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