//@ compile-flags:-Zprint-mono-items=eager #![deny(dead_code)] #![crate_type = "lib"] use std::ops::{Add, Deref, Index, IndexMut}; pub struct _Indexable { data: [u8; 3], } impl Index for _Indexable { type Output = u8; //~ MONO_ITEM fn <_Indexable as std::ops::Index>::index fn index(&self, index: usize) -> &Self::Output { if index >= 3 { &self.data[0] } else { &self.data[index] } } } impl IndexMut for _Indexable { //~ MONO_ITEM fn <_Indexable as std::ops::IndexMut>::index_mut fn index_mut(&mut self, index: usize) -> &mut Self::Output { if index >= 3 { &mut self.data[0] } else { &mut self.data[index] } } } //~ MONO_ITEM fn <_Equatable as std::cmp::PartialEq>::eq //~ MONO_ITEM fn <_Equatable as std::cmp::PartialEq>::ne #[derive(PartialEq)] pub struct _Equatable(u32); impl Add for _Equatable { type Output = u32; //~ MONO_ITEM fn <_Equatable as std::ops::Add>::add fn add(self, rhs: u32) -> u32 { self.0 + rhs } } impl Deref for _Equatable { type Target = u32; //~ MONO_ITEM fn <_Equatable as std::ops::Deref>::deref fn deref(&self) -> &Self::Target { &self.0 } }