#[non_exhaustive]pub enum CodeNode {
Show 18 variants
Literal(String),
TypeRef(TypeName),
NameRef(String),
StringLit(String),
InlineLiteral(String),
Nested(CodeBlock),
Comment(String),
SoftBreak,
Indent,
Dedent,
StatementBegin,
StatementEnd,
Newline,
BlockOpen,
BlockOpenOverride(String),
BlockClose,
BlockCloseTransition,
Sequence(Vec<CodeNode>),
}Expand description
A single node in the code generation tree.
Each variant is self-contained: a type reference is CodeNode::TypeRef(TypeName),
not a separate format tag plus a positional argument.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Literal(String)
Literal text (no interpolation).
TypeRef(TypeName)
A type reference with import tracking (was %T + Arg::TypeName).
NameRef(String)
A name identifier (was %N + Arg::Name).
StringLit(String)
A string literal value, rendered with language-specific quoting
(was %S + Arg::StringLit).
InlineLiteral(String)
An inline literal string (was %L + Arg::Literal).
Nested(CodeBlock)
A nested code block (was %L + Arg::Code).
Comment(String)
A comment line. Rendered as {prefix} {text}{suffix} using the
language’s comment syntax.
SoftBreak
Soft line break point (%W). In direct mode emits a space; in pretty
mode becomes BoxDoc::softline().
Indent
Increase indent level (%>).
Dedent
Decrease indent level (%<).
StatementBegin
Statement begin marker (%[). Triggers ensure_indent().
StatementEnd
Statement end marker (%]). Emits ; if the language uses semicolons.
Newline
Hard newline.
BlockOpen
Block open delimiter, resolved at render time via lang.block_syntax().block_open.
BlockOpenOverride(String)
Block open with an overridden delimiter string.
BlockClose
Terminal block close delimiter, resolved via lang.block_syntax().block_close.
BlockCloseTransition
Transitional block close delimiter (e.g. } else), resolved via
lang.block_syntax().block_close + " ".
Sequence(Vec<CodeNode>)
A sequence of nodes (for grouping, e.g. a statement or control flow block).