//@ run-pass //@ revisions: default feature #![cfg_attr(feature, feature(arbitrary_self_types))] // This test aims to be like the IndexVec within rustc, and conflicts // over its into_iter(). #[allow(dead_code)] trait Foo { fn foo(self) -> usize; } struct IndexVec(T); impl std::ops::Deref for IndexVec { type Target = T; fn deref(&self) -> &Self::Target { &self.0 } } impl<'a, T> Foo for &'a IndexVec { fn foo(self) -> usize { 2 } } impl IndexVec { fn foo(self) -> usize { 1 } } fn main() { let ivec = IndexVec(0usize); assert_eq!(ivec.foo(), 1); }