Skip to main content

## span_lint_and_note

# Function span_lint_and_note

Source

    pub fn span_lint_and_note<T: LintContext>(
        cx: &T,
        lint: &'static Lint,
        span: impl Into<MultiSpan>,
        msg: impl Into<DiagMessage>,
        note_span: Option<Span>,
        note: impl Into<DiagMessage>,
    )

Expand description

Like `span_lint` but with a `note` section instead of a `help` message.

The `note` message is presented separately from the main lint message and is attached to a specific span:

If you change the signature, remember to update the internal lint `CollapsibleCalls`

NOTE: Lint emissions are always bound to a node in the HIR, which is used to determine the lint level. For the `span_lint_and_note` function, the node that was passed into the `LintPass::check_*` function is used.

If you’re emitting the lint at the span of a different node than the one provided by the `LintPass::check_*` function, consider using `span_lint_hir_and_then` instead. This is needed for `#[allow]` and `#[expect]` attributes to work on the node highlighted in the displayed warning.

If you’re unsure which function you should use, you can test if the `#[expect]` attribute works where you would expect it to. If it doesn’t, you likely need to use `span_lint_hir_and_then` instead.

## §Example

    error: calls to `std::mem::forget` with a reference instead of an owned value. Forgetting a reference does nothing.
      --> tests/ui/drop_forget_ref.rs:10:5
       |
    10 |     forget(&SomeStruct);
       |     ^^^^^^^^^^^^^^^^^^^
       |
       = note: `-D clippy::forget-ref` implied by `-D warnings`
    note: argument has type &SomeStruct
      --> tests/ui/drop_forget_ref.rs:10:12
       |
    10 |     forget(&SomeStruct);
       |            ^^^^^^^^^^^