pub enum Inline {
Text(String),
Link {
url: Url,
title: Option<String>,
children: Vec<Inline>,
is_wikilink: bool,
},
Image {
src: Url,
alt: String,
title: Option<String>,
is_wikilink: bool,
wikilink_pothole: Option<String>,
},
Emphasis(Vec<Inline>),
Strong(Vec<Inline>),
Code(String),
LineBreak,
Strikethrough(Vec<Inline>),
FootnoteRef(String),
TaskMarker(bool),
Other(String),
}Expand description
An inline-level AST node.
Variants§
Text(String)
Link
[content](url "title") or [[wikilink]].
is_wikilink preserves pulldown-cmark’s LinkType::WikiLink
discriminator at parse time so the renderer can emit
class="wikilink" on the <a> tag and downstream consumers
(graph builder, link-resolver) can distinguish wikilink targets
from standard markdown links. Added Phase 4 PR7a (2026-05-28) as
the smallest AST change matching mdast convention (Link node +
extension flag, mirroring LinkType::WikiLink as a tag).
Fields
Image
 or ![[wikilink]].
is_wikilink + wikilink_pothole (Phase 4 PR7a-flip-core-B,
2026-05-28) preserve pulldown-cmark’s LinkType::WikiLink
discriminator and the original pothole text so the
dispatch_wikilink_embeds visitor can route ![[v.mp4|width=400]]
→ per-extension renderer (video / pdf / audio / iframe / 3D /
notebook / etc) with the typed params intact. The parser’s
Tag::Image arm captures the raw pothole BEFORE PR3.5’s
wikilink-alt classification consumes it into the alt field;
without preservation, the width=400 token is erased after
alt-classification.
is_wikilink: false and wikilink_pothole: None for standard
 markdown images.
Fields
Emphasis(Vec<Inline>)
*emphasis*
Strong(Vec<Inline>)
**strong**
Code(String)
`code`
LineBreak
Hard line break.
Strikethrough(Vec<Inline>)
~~struck~~
FootnoteRef(String)
[^label] — a GFM footnote marker. Carries the author’s label, not
the printed number: numbering is first-reference order over the whole
document, which is a render-time fact (same rule as
ColumnAlignment’s numeric auto-alignment). See ADR-035.
TaskMarker(bool)
The [ ] / [x] of a GFM task-list item, carrying its checked state.
Modeled as an INLINE, not as a field on Block::List, because that is
where pulldown-cmark puts it: Event::TaskListMarker is the first event
inside Tag::Item, ahead of the item’s own content. Keeping it inline
leaves Block::List’s shape untouched and avoids a third vector parallel
to items / item_source_lines. See ADR-035 § Task lists.
Other(String)
Raw inline HTML passthrough (Event::Html / Event::InlineHtml),
plus the math node math_text::math_inline synthesizes (ADR-030).
NOT a fallback for unmodeled pulldown constructs — see the module doc.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Inline
impl<'de> Deserialize<'de> for Inline
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>,
impl Eq for Inline
impl StructuralPartialEq for Inline
Auto Trait Implementations§
impl Freeze for Inline
impl RefUnwindSafe for Inline
impl Send for Inline
impl Sync for Inline
impl Unpin for Inline
impl UnsafeUnpin for Inline
impl UnwindSafe for Inline
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>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.