@@ -97,6 +97,66 @@ LL | let y: Result<&usize, usize> = x;
9797 = note: expected enum `Result<&usize, usize>`
9898 found reference `&Result<usize, usize>`
9999
100- error: aborting due to 7 previous errors
100+ error[E0308]: mismatched types
101+ --> $DIR/as-ref.rs:22:42
102+ |
103+ LL | multiple_ref_opt.map(|arg| takes_ref(arg));
104+ | --- --------- ^^^ expected `&Foo`, found struct `Foo`
105+ | | |
106+ | | arguments to this function are incorrect
107+ | help: consider using `as_ref` instead: `as_ref().map`
108+ |
109+ note: function defined here
110+ --> $DIR/as-ref.rs:3:4
111+ |
112+ LL | fn takes_ref(_: &Foo) {}
113+ | ^^^^^^^^^ -------
114+
115+ error[E0308]: mismatched types
116+ --> $DIR/as-ref.rs:23:52
117+ |
118+ LL | multiple_ref_opt.and_then(|arg| Some(takes_ref(arg)));
119+ | -------- --------- ^^^ expected `&Foo`, found struct `Foo`
120+ | | |
121+ | | arguments to this function are incorrect
122+ | help: consider using `as_ref` instead: `as_ref().and_then`
123+ |
124+ note: function defined here
125+ --> $DIR/as-ref.rs:3:4
126+ |
127+ LL | fn takes_ref(_: &Foo) {}
128+ | ^^^^^^^^^ -------
129+
130+ error[E0308]: mismatched types
131+ --> $DIR/as-ref.rs:25:45
132+ |
133+ LL | multiple_ref_result.map(|arg| takes_ref(arg));
134+ | --- --------- ^^^ expected `&Foo`, found struct `Foo`
135+ | | |
136+ | | arguments to this function are incorrect
137+ | help: consider using `as_ref` instead: `as_ref().map`
138+ |
139+ note: function defined here
140+ --> $DIR/as-ref.rs:3:4
141+ |
142+ LL | fn takes_ref(_: &Foo) {}
143+ | ^^^^^^^^^ -------
144+
145+ error[E0308]: mismatched types
146+ --> $DIR/as-ref.rs:26:53
147+ |
148+ LL | multiple_ref_result.and_then(|arg| Ok(takes_ref(arg)));
149+ | -------- --------- ^^^ expected `&Foo`, found struct `Foo`
150+ | | |
151+ | | arguments to this function are incorrect
152+ | help: consider using `as_ref` instead: `as_ref().and_then`
153+ |
154+ note: function defined here
155+ --> $DIR/as-ref.rs:3:4
156+ |
157+ LL | fn takes_ref(_: &Foo) {}
158+ | ^^^^^^^^^ -------
159+
160+ error: aborting due to 11 previous errors
101161
102162For more information about this error, try `rustc --explain E0308`.
0 commit comments