]> git.lizzy.rs Git - rust.git/blob - src/test/ui/consts/const_discriminant.rs
564434bb6fa361a948b269faf00c8dc0916b876a
[rust.git] / src / test / ui / consts / const_discriminant.rs
1 // run-pass
2 #![feature(const_discriminant)]
3
4 use std::mem::{discriminant, Discriminant};
5
6 fn identity<T>(x: T) -> T { x }
7
8 enum Test {
9     A(u8),
10     B,
11     C { a: u8, b: u8 },
12 }
13
14 const TEST_A: Discriminant<Test> = discriminant(&Test::A(5));
15 const TEST_A_OTHER: Discriminant<Test> = discriminant(&Test::A(17));
16 const TEST_B: Discriminant<Test> = discriminant(&Test::B);
17
18 fn main() {
19     assert_eq!(TEST_A, TEST_A_OTHER);
20     assert_eq!(TEST_A, discriminant(identity(&Test::A(17))));
21     assert_eq!(TEST_B, discriminant(identity(&Test::B)));
22     assert_ne!(TEST_A, TEST_B);
23     assert_ne!(TEST_B, discriminant(identity(&Test::C { a: 42, b: 7 })));
24 }