pub struct MD042NoEmptyLinks {}Expand description
Rule MD042: No empty links
See docs/md042.md for full documentation, configuration, and examples.
This rule is triggered when a link has no destination (URL). “Empty links do not lead anywhere and therefore don’t function as links.”
Note: Empty TEXT with a valid URL (e.g., [](url)) is NOT flagged by MD042.
While this may be an accessibility concern, it’s not an “empty link” per se.
§MkDocs Support
When flavor = "mkdocs" is configured, this rule recognizes two types of valid MkDocs patterns:
§1. Auto-References (via mkdocs-autorefs / mkdocstrings)
Backtick-wrapped Python identifiers used for cross-referencing:
[`module.Class`][] // Python class reference
[`str`][] // Built-in type reference
[`api.function`][] // Function referenceReferences:
§2. Paragraph Anchors (via Python-Markdown attr_list extension)
Empty links combined with attributes to create anchor points:
[](){ #my-anchor } // Basic anchor
[](){ #anchor .class } // Anchor with CSS class
[](){: #anchor } // With colon (canonical attr_list syntax)
[](){ .class1 .class2 } // Classes onlyThis syntax combines:
- Empty link
[]()→ creates<a href=""></a> - attr_list syntax
{ #id }→ adds attributes to preceding element - Result:
<a href="" id="my-anchor"></a>
References:
Implementation: See is_mkdocs_attribute_anchor
Implementations§
Trait Implementations§
Source§impl Clone for MD042NoEmptyLinks
impl Clone for MD042NoEmptyLinks
Source§fn clone(&self) -> MD042NoEmptyLinks
fn clone(&self) -> MD042NoEmptyLinks
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Default for MD042NoEmptyLinks
impl Default for MD042NoEmptyLinks
Source§fn default() -> MD042NoEmptyLinks
fn default() -> MD042NoEmptyLinks
Source§impl Rule for MD042NoEmptyLinks
impl Rule for MD042NoEmptyLinks
Source§fn category(&self) -> RuleCategory
fn category(&self) -> RuleCategory
Get the category of this rule for selective processing
Source§fn should_skip(&self, ctx: &LintContext<'_>) -> bool
fn should_skip(&self, ctx: &LintContext<'_>) -> bool
Check if this rule should be skipped
fn name(&self) -> &'static str
fn description(&self) -> &'static str
fn check(&self, ctx: &LintContext<'_>) -> LintResult
fn fix(&self, ctx: &LintContext<'_>) -> Result<String, LintError>
fn as_any(&self) -> &dyn Any
Source§fn from_config(_config: &Config) -> Box<dyn Rule>where
Self: Sized,
fn from_config(_config: &Config) -> Box<dyn Rule>where
Self: Sized,
Source§fn default_config_section(&self) -> Option<(String, Value)>
fn default_config_section(&self) -> Option<(String, Value)>
impl Rule for ... block,
not just the inherent impl.Source§fn config_aliases(&self) -> Option<HashMap<String, String>>
fn config_aliases(&self) -> Option<HashMap<String, String>>
Source§fn fix_capability(&self) -> FixCapability
fn fix_capability(&self) -> FixCapability
Source§fn cross_file_scope(&self) -> CrossFileScope
fn cross_file_scope(&self) -> CrossFileScope
Source§fn contribute_to_index(
&self,
_ctx: &LintContext<'_>,
_file_index: &mut FileIndex,
)
fn contribute_to_index( &self, _ctx: &LintContext<'_>, _file_index: &mut FileIndex, )
Source§fn cross_file_check(
&self,
_file_path: &Path,
_file_index: &FileIndex,
_workspace_index: &WorkspaceIndex,
) -> LintResult
fn cross_file_check( &self, _file_path: &Path, _file_index: &FileIndex, _workspace_index: &WorkspaceIndex, ) -> LintResult
Auto Trait Implementations§
impl Freeze for MD042NoEmptyLinks
impl RefUnwindSafe for MD042NoEmptyLinks
impl Send for MD042NoEmptyLinks
impl Sync for MD042NoEmptyLinks
impl Unpin for MD042NoEmptyLinks
impl UnwindSafe for MD042NoEmptyLinks
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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