1 error[E0308]: mismatched types
2 --> $DIR/as-ref.rs:7:29
4 LL | opt.map(|arg| takes_ref(arg));
5 | --- --------- ^^^ expected `&Foo`, found struct `Foo`
7 | | arguments to this function are incorrect
8 | help: consider using `as_ref` instead: `as_ref().map`
10 note: function defined here
11 --> $DIR/as-ref.rs:3:4
13 LL | fn takes_ref(_: &Foo) {}
16 error[E0308]: mismatched types
17 --> $DIR/as-ref.rs:8:39
19 LL | opt.and_then(|arg| Some(takes_ref(arg)));
20 | -------- --------- ^^^ expected `&Foo`, found struct `Foo`
22 | | arguments to this function are incorrect
23 | help: consider using `as_ref` instead: `as_ref().and_then`
25 note: function defined here
26 --> $DIR/as-ref.rs:3:4
28 LL | fn takes_ref(_: &Foo) {}
31 error[E0308]: mismatched types
32 --> $DIR/as-ref.rs:10:29
34 LL | opt.map(|arg| takes_ref(arg));
35 | --- --------- ^^^ expected `&Foo`, found struct `Foo`
37 | | arguments to this function are incorrect
38 | help: consider using `as_ref` instead: `as_ref().map`
40 note: function defined here
41 --> $DIR/as-ref.rs:3:4
43 LL | fn takes_ref(_: &Foo) {}
46 error[E0308]: mismatched types
47 --> $DIR/as-ref.rs:11:37
49 LL | opt.and_then(|arg| Ok(takes_ref(arg)));
50 | -------- --------- ^^^ expected `&Foo`, found struct `Foo`
52 | | arguments to this function are incorrect
53 | help: consider using `as_ref` instead: `as_ref().and_then`
55 note: function defined here
56 --> $DIR/as-ref.rs:3:4
58 LL | fn takes_ref(_: &Foo) {}
61 error[E0308]: mismatched types
62 --> $DIR/as-ref.rs:13:29
64 LL | let y: Option<&usize> = x;
67 | | expected enum `Option`, found `&Option<usize>`
68 | | help: you can convert from `&Option<T>` to `Option<&T>` using `.as_ref()`: `x.as_ref()`
69 | expected due to this
71 = note: expected enum `Option<&usize>`
72 found reference `&Option<usize>`
74 error[E0308]: mismatched types
75 --> $DIR/as-ref.rs:15:37
77 LL | let y: Result<&usize, &usize> = x;
78 | ---------------------- ^ expected enum `Result`, found reference
80 | expected due to this
82 = note: expected enum `Result<&usize, &usize>`
83 found reference `&Result<usize, usize>`
84 help: you can convert from `&Result<T, E>` to `Result<&T, &E>` using `.as_ref()`
86 LL | let y: Result<&usize, &usize> = x.as_ref();
89 error[E0308]: mismatched types
90 --> $DIR/as-ref.rs:19:36
92 LL | let y: Result<&usize, usize> = x;
93 | --------------------- ^ expected enum `Result`, found reference
95 | expected due to this
97 = note: expected enum `Result<&usize, usize>`
98 found reference `&Result<usize, usize>`
100 error[E0308]: mismatched types
101 --> $DIR/as-ref.rs:22:42
103 LL | multiple_ref_opt.map(|arg| takes_ref(arg));
104 | --- --------- ^^^ expected `&Foo`, found struct `Foo`
106 | | arguments to this function are incorrect
107 | help: consider using `as_ref` instead: `as_ref().map`
109 note: function defined here
110 --> $DIR/as-ref.rs:3:4
112 LL | fn takes_ref(_: &Foo) {}
115 error[E0308]: mismatched types
116 --> $DIR/as-ref.rs:23:52
118 LL | multiple_ref_opt.and_then(|arg| Some(takes_ref(arg)));
119 | -------- --------- ^^^ expected `&Foo`, found struct `Foo`
121 | | arguments to this function are incorrect
122 | help: consider using `as_ref` instead: `as_ref().and_then`
124 note: function defined here
125 --> $DIR/as-ref.rs:3:4
127 LL | fn takes_ref(_: &Foo) {}
130 error[E0308]: mismatched types
131 --> $DIR/as-ref.rs:25:45
133 LL | multiple_ref_result.map(|arg| takes_ref(arg));
134 | --- --------- ^^^ expected `&Foo`, found struct `Foo`
136 | | arguments to this function are incorrect
137 | help: consider using `as_ref` instead: `as_ref().map`
139 note: function defined here
140 --> $DIR/as-ref.rs:3:4
142 LL | fn takes_ref(_: &Foo) {}
145 error[E0308]: mismatched types
146 --> $DIR/as-ref.rs:26:53
148 LL | multiple_ref_result.and_then(|arg| Ok(takes_ref(arg)));
149 | -------- --------- ^^^ expected `&Foo`, found struct `Foo`
151 | | arguments to this function are incorrect
152 | help: consider using `as_ref` instead: `as_ref().and_then`
154 note: function defined here
155 --> $DIR/as-ref.rs:3:4
157 LL | fn takes_ref(_: &Foo) {}
160 error: aborting due to 11 previous errors
162 For more information about this error, try `rustc --explain E0308`.