#![deny(clippy::mem_discriminant_non_enum)] use std::mem; enum Foo { One(usize), Two(u8), } struct A(Foo); fn main() { // bad mem::discriminant(&"hello"); mem::discriminant(&&Some(2)); mem::discriminant(&&None::); mem::discriminant(&&Foo::One(5)); mem::discriminant(&&Foo::Two(5)); mem::discriminant(&A(Foo::One(0))); let ro = &Some(3); let rro = &ro; mem::discriminant(&ro); mem::discriminant(rro); mem::discriminant(&rro); macro_rules! mem_discriminant_but_in_a_macro { ($param:expr) => { mem::discriminant($param) }; } mem_discriminant_but_in_a_macro!(&rro); let rrrrro = &&&rro; mem::discriminant(&rrrrro); mem::discriminant(*rrrrro); // ok mem::discriminant(&Some(2)); mem::discriminant(&None::); mem::discriminant(&Foo::One(5)); mem::discriminant(&Foo::Two(5)); mem::discriminant(ro); mem::discriminant(*rro); mem::discriminant(****rrrrro); }