pub struct LayoutNodeData {
pub block_id: String,
pub block_stack: Vec<String>,
pub active_block_id: String,
pub extra: Map<String, Value>,
}Expand description
Leaf-only payload — references the block this layout leaf renders.
Group nodes (those with children) carry no data.
Fields§
§block_id: StringThe currently-rendered block for this leaf. Always kept in sync with
active_block_id when block_stack is non-empty — this field is
what every existing (pre-tabs) reader/pruner cares about, so a leaf
with no stack behaves identically to before this field existed.
block_stack: Vec<String>In-pane tabs (SPEC_PANE_TAB_STRIP_AGENT_TERMINAL_2026_07_20.md §4.3):
every blockId hosted by this leaf, ordered; empty/absent means “no
stack, just block_id” — 100% back-compat with every layout written
before this field existed. When non-empty, block_id MUST equal
active_block_id and MUST be a member of this list.
active_block_id: StringThe active member of block_stack. Empty/unused when block_stack
is empty. Kept as an explicit field (rather than only ever reading
block_id) so intent is unambiguous in the wire format.
extra: Map<String, Value>Catch-all for unknown fields — preserves forward-compat when the
frontend writes additional fields we don’t yet model. Uses
serde_json::Map (insertion-ordered) for deterministic round-trips.
Trait Implementations§
Source§impl Clone for LayoutNodeData
impl Clone for LayoutNodeData
Source§fn clone(&self) -> LayoutNodeData
fn clone(&self) -> LayoutNodeData
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for LayoutNodeData
impl Debug for LayoutNodeData
Source§impl Default for LayoutNodeData
impl Default for LayoutNodeData
Source§fn default() -> LayoutNodeData
fn default() -> LayoutNodeData
Source§impl<'de> Deserialize<'de> for LayoutNodeData
impl<'de> Deserialize<'de> for LayoutNodeData
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<LayoutNodeData, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<LayoutNodeData, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for LayoutNodeData
impl PartialEq for LayoutNodeData
Source§impl Serialize for LayoutNodeData
impl Serialize for LayoutNodeData
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for LayoutNodeData
Auto Trait Implementations§
impl Freeze for LayoutNodeData
impl RefUnwindSafe for LayoutNodeData
impl Send for LayoutNodeData
impl Sync for LayoutNodeData
impl Unpin for LayoutNodeData
impl UnsafeUnpin for LayoutNodeData
impl UnwindSafe for LayoutNodeData
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
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>,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
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> ⓘ
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> ⓘ
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