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: NodeIdNode id (node/<kebab>), unique within the graph.
intent: StringWhat 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<'de> Deserialize<'de> for Node
impl<'de> Deserialize<'de> for Node
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>,
Source§impl JsonSchema for Node
impl JsonSchema for Node
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more