@@ -97,6 +97,66 @@ LL | let y: Result<&usize, usize> = x;
97
97
= note: expected enum `Result<&usize, usize>`
98
98
found reference `&Result<usize, usize>`
99
99
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
101
161
102
162
For more information about this error, try `rustc --explain E0308`.
0 commit comments