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