1 // run-pass 2 3 trait Get { 4 type Value; get(&self) -> &<Self as Get>::Value5 fn get(&self) -> &<Self as Get>::Value; 6 } 7 8 struct Struct { 9 x: isize, 10 } 11 12 impl Get for Struct { 13 type Value = isize; get(&self) -> &isize14 fn get(&self) -> &isize { 15 &self.x 16 } 17 } 18 19 impl Struct { grab<T:Get>(x: &T) -> &<T as Get>::Value20 fn grab<T:Get>(x: &T) -> &<T as Get>::Value { 21 x.get() 22 } 23 } 24 main()25fn main() { 26 let s = Struct { 27 x: 100, 28 }; 29 assert_eq!(*Struct::grab(&s), 100); 30 } 31