Skip to content

clippy beta 1.87 lints all pointer comparisons, possibly too much? #14525

Closed
@davidhewitt

Description

@davidhewitt

Summary

As of clippy beta 1.87 the ptr_eq lint seems to be forbidding all pointer equality.

I think this seems like a regression, as far as I can tell the ptr_eq lint is intended to help in cases where &T references are being cast to pointers and then compared. Using std::ptr::eq can coerce those references and conveys intention cleanly.

On the other hand, if you already have pointers, calling std::ptr::eq doesn't seem necessary to me?

Reproducer

I tried this code:

pub fn foo() -> bool {
    let a: *const i32 = std::ptr::null();
    let b: *const i32 = std::ptr::null();
    
    a == b
}

I expected to see this happen:

Lint ok

Instead, this happened:

Clippy suggests replacing a == b with a call to std::ptr::eq.

Version

0.1.87 (2025-04-01 45165c82a4)

Additional Labels

No response

Metadata

Metadata

Assignees

Labels

C-bugCategory: Clippy is not doing the correct thing

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions