| // run-pass | |
| // compile-flags:-Zmir-opt-level=3 | |
| pub enum Enum { | |
| A, | |
| B, | |
| } | |
| trait SliceIndex { | |
| type Output; | |
| fn get(&self) -> &Self::Output; | |
| } | |
| impl SliceIndex for usize { | |
| type Output = Enum; | |
| #[inline(never)] | |
| fn get(&self) -> &Enum { | |
| &Enum::A | |
| } | |
| } | |
| #[inline(always)] | |
| fn index<T: SliceIndex>(t: &T) -> &T::Output { | |
| t.get() | |
| } | |
| fn main() { | |
| match *index(&0) { Enum::A => true, _ => false }; | |
| } |