6 struct DerefWithHelper<H, T> {
12 fn helper_borrow(&self) -> &T;
15 impl<T> Helper<T> for Option<T> {
16 fn helper_borrow(&self) -> &T {
17 self.as_ref().unwrap()
21 impl<T, H: Helper<T>> Deref for DerefWithHelper<H, T> {
24 fn deref(&self) -> &T {
25 self.helper.helper_borrow()
32 fn foo(&self) -> isize {self.x}
36 let x: DerefWithHelper<Option<Foo>, Foo> =
37 DerefWithHelper { helper: Some(Foo {x: 5}), value: Foo { x: 2 } };
38 assert_eq!(x.foo(), 5);