[][src]Trait dcc_lsystem::turtle::TurtleContainer

pub trait TurtleContainer {
    type Item;
    fn inner(&self) -> &dyn MovingTurtle<Item = Self::Item>;
}

This trait indicates that the implementor contains a turtle for us to play with.

It's a bit annoying to have to implement this trait everywhere, so using the dcc-lsystem-derive crate you can do the following:

use dcc_lsystem::turtle::{SimpleTurtle, TurtleContainer};
use dcc_lsystem_derive::TurtleContainer;

#[derive(TurtleContainer)]
struct BasicContainer {
    #[turtle]
    inner : SimpleTurtle,

    /* <----- some other fields ----- */
}

which is roughly equivalent to the following:

use dcc_lsystem::turtle::{SimpleTurtle, TurtleContainer, MovingTurtle};

struct BasicContainer {
    inner : SimpleTurtle,

    /* <----- some other fields ----- */
}

impl TurtleContainer for BasicContainer {
    type Item = <SimpleTurtle as MovingTurtle>::Item;

    fn inner(&self) -> &MovingTurtle<Item = Self::Item> {
        &self.inner
    }
}

Associated Types

type Item

Loading content...

Required methods

fn inner(&self) -> &dyn MovingTurtle<Item = Self::Item>

Loading content...

Implementors

impl<T> TurtleContainer for dyn MovingTurtle<Item = T>[src]

Every turtle contains a turtle

type Item = T

Loading content...