Skip to main content

Node

Struct Node 

Source
pub struct Node {
    pub id: NodeId,
    pub intent: String,
    pub size_class: Option<String>,
    pub way_class: Option<String>,
    pub note: Option<String>,
    pub stations: Vec<Station>,
}
Expand description

A place: a room, a courtyard, an arena, a stretch of shore, a cavern.

Fields§

§id: NodeId

Node id (node/<kebab>), unique within the graph.

§intent: String

What this place is for, in the author’s own words.

A free non-empty label — arena, hub, vista, gate-house, shortcut-landing — that no check keys on. It is recorded judgement for the reviewer and for the later per-place briefs, and it is kept free-form deliberately: an enum of intents would be this month’s genre wearing a schema’s clothes.

§size_class: Option<String>

The size class this place is built to, naming a rung of the metrics table’s ladder (alcove, room, hall, …). A name the table does not define is DW0812.

Exactly one of this and Node::way_class (DW0875). It is Option rather than required because the alternative is a different KIND of classification and not a rung — see Node::way_class — and a required field with a sentinel value would be the ladder pretending to classify something it cannot.

§way_class: Option<String>

The way class this place is built to, naming an entry of the metrics table’s way vocabulary (corridor, road, …) — the second kind of place classification (spec-0053 §3). A name the table does not define is DW0812, exactly as for a size class.

Exactly one of this and Node::size_class (DW0875).

A way is a place whose footprint is bounded in one axis and free in the other: a road, a causeway, a corridor, a duct. The ladder cannot classify one, and no calibration of it could — for a rung to admit a cut ledge one body wide climbing a whole seaward face, that rung would have to span 4..90 on an axis, and a class in which an alcove and an expanse are the same thing has stopped classifying. The failure is by KIND, not by margin.

It classifies the cross-section and nothing else. The run is per-campaign geometry: the site plan states it by putting the box where it put it, DW0832 demands only that it EXCEED the class’s widest cross-section, and the pacing measurement reads it. There is no length standard here and there is not going to be one (spec-0053 §7).

§note: Option<String>

Anything the reviewer needs that intent does not carry.

§stations: Vec<Station>

The named places inside this one (spec-0052 §3).

A site-plan campaign’s anchor vocabulary is otherwise exactly the synthesized set — spawn, one anchor per node, and the seam and unlock anchors of barred edges — which is complete only for the authoring order it was designed for: quests written against nodes before any piece exists. The inverse order is real, and its quest layer names places inside places: the fire pit in the camp, the aft deck of the galley. Those names are the campaign’s design, and flattening them onto box centres un-writes its spatial script.

A station is a name and a shape, never a position (§5): while the box is massed the derivation realizes each station at a stand-in of its own, and when a piece is bound the detail-plan anchors map re-binds it to an anchor of that piece, which is where the name gets its real place. There is no coordinate, offset or hint field here, and that absence is the design rather than an omission.

Declared names join the campaign vocabulary at the same authority as every synthesized one — crate::siteplan::synthesized_anchors is still the single place the question is answered, so a name that validates cannot fail to exist in the built world.

Trait Implementations§

Source§

impl Clone for Node

Source§

fn clone(&self) -> Node

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Node

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Node

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl JsonSchema for Node

Source§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
Source§

fn inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword. Read more
Source§

impl PartialEq for Node

Source§

fn eq(&self, other: &Node) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Node

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Node

Auto Trait Implementations§

§

impl Freeze for Node

§

impl RefUnwindSafe for Node

§

impl Send for Node

§

impl Sync for Node

§

impl Unpin for Node

§

impl UnsafeUnpin for Node

§

impl UnwindSafe for Node

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.