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 grab<T:Get>(x: &T) -> &<T as Get>::Value19fn grab<T:Get>(x: &T) -> &<T as Get>::Value { 20 x.get() 21 } 22 main()23fn main() { 24 let s = Struct { 25 x: 100, 26 }; 27 assert_eq!(*grab(&s), 100); 28 } 29