#[non_exhaustive]pub enum Link<'a> {
Text2Dest(Cow<'a, str>, Cow<'a, str>, Cow<'a, str>),
Text2Label(Cow<'a, str>, Cow<'a, str>),
Label2Dest(Cow<'a, str>, Cow<'a, str>, Cow<'a, str>),
TextLabel2Dest(Cow<'a, str>, Cow<'a, str>, Cow<'a, str>),
Label2Label(Cow<'a, str>, Cow<'a, str>),
Image(Cow<'a, str>, Cow<'a, str>),
Image2Dest(Cow<'a, str>, Cow<'a, str>, Cow<'a, str>, Cow<'a, str>, Cow<'a, str>, Cow<'a, str>),
}
Expand description
A [hyperlink] with the following variants:
- an [inline link]
Text2Dev
, - a [reference link]
Text2Label
, - a [link reference definition]
Label2Dest
, - a [combined inline link / link reference definition]
TextLabel2Dest
, - a [reference alias]
Label2Label
, - an [inline image]
Image
or - an [inline link with embedded inline image]
Image2Dest
This is the main return type of this API.
The link title in Markdown is optional, when not given the string is set
to the empty string ""
. The back ticks ` in reStructuredText can be
omitted when only one word is enclosed without spaces.
[markup hyperlink]: https://spec.commonmark.org/0.30/#links) [reference link]: https://spec.commonmark.org/0.30/#reference-link [link reference definition]: https://spec.commonmark.org/0.30/#link-reference-definition [combined inline link / link reference definition]: https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#hyperlink-references [reference alias]: https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#hyperlink-references [inline image]: https://spec.commonmark.org/0.30/#images [inline link with embedded inline image]: https://spec.commonmark.org/0.30/#example-519
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Text2Dest(Cow<'a, str>, Cow<'a, str>, Cow<'a, str>)
An inline link with the following tuple values:
Text2Dest(link_text, link_destination, link_title)
In (stand alone) inline links the destination and title are given
immediately after the link text. When an inline link is rendered, only
the link_text
is visible in the continuous text.
- Markdown example:
[link_text](link_dest "link title")
- reStructuredText example:
`link_text <link_dest>`__
- Asciidoc example:
http://link_dest[link_text]
- Wikitext example:
[http://link_dest link_text]
Text2Label(Cow<'a, str>, Cow<'a, str>)
A reference link with the following tuple values:
Text2Label(link_text, link_label)
In reference links the destination and title are defined elsewhere
in the document in some link reference definition. When a reference
link is rendered only link_text
is visible.
- Markdown examples:When only link text is given, link label is set to the same string.
[link_text][link_label] [link_text]
- reStructuredText examples:When only link text is given, link label is set to the same string.
`link_text <link_label_>`_ `link_text`_
- Asciidoc example:
{link_label}[link_text]
Label2Dest(Cow<'a, str>, Cow<'a, str>, Cow<'a, str>)
A link reference definition with the following tuple values:
Label2Dest(link_label, link_destination, link_title)
A link reference definition refers to a reference link with the same link label. A link reference definition is not visible when the document is rendered. link title is optional.
- Markdown example:
[link_label]: link_dest "link title"
- reStructuredText examples:When
.. _`link_label`: link_dest .. __: link_dest __ link_dest
__
is given, the link label is set to"_"
, which is a marker for an anonymous link label. - Asciidoc example:
:link_label: http://link_dest
TextLabel2Dest(Cow<'a, str>, Cow<'a, str>, Cow<'a, str>)
An inline link/link reference definition’ with tuple values:
Label2Dest(link_text_label, link_destination, link_title)
This type represents a combined inline link and link reference
definition. Semantically TextLabel2Dest
is a shorthand for two links
Text2Dest
and Label2Dest
in one object, where link text and link
label are the same string. When rendered, link text is visible.
- Consider the following reStructuredText link:In this link is
`link_text_label <link_dest>`_ `a <b>`_
b
the link destination anda
has a double role: it defines link text of the first linkText2Dest("a", "b", "")
and link label of the second linkLabel2Dest("a", "b", "")
.
Label2Label(Cow<'a, str>, Cow<'a, str>)
A reference alias with the following tuple values:
Label2Label(alt_link_label, link_label)
The reference alias defines an alternative link label
alt_link_label
for an existing link_label
defined elsewhere in the
document. At some point, the link_label
must be resolved to a
link_destination
by a link_reference_definition. A reference
alias is not visible when the document is rendered.
This link type is only available in reStructuredText, e.g.
.. _`alt_link_label`: `link_label`_
Image(Cow<'a, str>, Cow<'a, str>)
An inline image with the following tuple values:
Image(img_alt, img_src)
Note: this crate does not contain parsers for this variant.
Image2Dest(Cow<'a, str>, Cow<'a, str>, Cow<'a, str>, Cow<'a, str>, Cow<'a, str>, Cow<'a, str>)
An inline link with embedded inline image and the following tuple values.
Image2Text(text1, img_alt, img_src, text2, dest, title)