pub struct RuleDef {
pub params: Vec<String>,
pub variants: Vec<RuleVariant>,
}Expand description
The CGA Shape Grammar derivation engine.
Rules are registered by name, then derive is called with a root scope and
root rule name. The engine expands rules breadth-first until every branch
terminates with an I(mesh) terminal.
Stochastic rules with multiple weighted variants use the engine’s seed for
reproducible randomness — the same seed always yields the same building.
A registered rule: declared parameter names plus its weighted variants.
Fields§
§params: Vec<String>Parameter names bound to call-argument values at invocation. Empty for parameterless rules.
variants: Vec<RuleVariant>Trait Implementations§
Source§impl<'de> Deserialize<'de> for RuleDef
impl<'de> Deserialize<'de> for RuleDef
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl StructuralPartialEq for RuleDef
Auto Trait Implementations§
impl Freeze for RuleDef
impl RefUnwindSafe for RuleDef
impl Send for RuleDef
impl Sync for RuleDef
impl Unpin for RuleDef
impl UnsafeUnpin for RuleDef
impl UnwindSafe for RuleDef
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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