pub trait TurtleContainer {
type Item;
// Required method
fn inner(&self) -> &dyn MovingTurtle<Item = Self::Item>;
}Expand description
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
}
}Required Associated Types§
Required Methods§
fn inner(&self) -> &dyn MovingTurtle<Item = Self::Item>
Implementors§
Source§impl TurtleContainer for TurtleLSystemState
impl TurtleContainer for TurtleLSystemState
type Item = <SimpleTurtle as MovingTurtle>::Item
Source§impl<T> TurtleContainer for dyn MovingTurtle<Item = T>
Every turtle contains a turtle.
impl<T> TurtleContainer for dyn MovingTurtle<Item = T>
Every turtle contains a turtle.