|  | //@ run-pass | 
|  | #![allow(dead_code)] | 
|  |  | 
|  | use std::mem::{discriminant, Discriminant}; | 
|  | use std::hint::black_box; | 
|  |  | 
|  | enum Test { | 
|  | A(u8), | 
|  | B, | 
|  | C { a: u8, b: u8 }, | 
|  | } | 
|  |  | 
|  | const TEST_A: Discriminant<Test> = discriminant(&Test::A(5)); | 
|  | const TEST_A_OTHER: Discriminant<Test> = discriminant(&Test::A(17)); | 
|  | const TEST_B: Discriminant<Test> = discriminant(&Test::B); | 
|  |  | 
|  | enum Void {} | 
|  |  | 
|  | enum SingleVariant { | 
|  | V, | 
|  | Never(Void), | 
|  | } | 
|  |  | 
|  | const TEST_V: Discriminant<SingleVariant> = discriminant(&SingleVariant::V); | 
|  |  | 
|  | fn main() { | 
|  | assert_eq!(TEST_A, TEST_A_OTHER); | 
|  | assert_eq!(TEST_A, discriminant(black_box(&Test::A(17)))); | 
|  | assert_eq!(TEST_B, discriminant(black_box(&Test::B))); | 
|  | assert_ne!(TEST_A, TEST_B); | 
|  | assert_ne!(TEST_B, discriminant(black_box(&Test::C { a: 42, b: 7 }))); | 
|  |  | 
|  | assert_eq!(TEST_V, discriminant(black_box(&SingleVariant::V))); | 
|  | } |