summary refs log tree commit diff
path: root/src/test/ui/lifetime-errors/ex2d-push-inference-variable-2.stderr
blob: 38b0acf9339e0e89595a6c0ee889abca1f2c221e (plain)
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
28
29
30
31
32
33
34
35
36
37
error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'a` due to conflicting requirements
  --> $DIR/ex2d-push-inference-variable-2.rs:17:13
   |
17 |     let b = Ref { data: y.data };
   |             ^^^
   |
note: first, the lifetime cannot outlive the lifetime 'c as defined on the function body at 15:1...
  --> $DIR/ex2d-push-inference-variable-2.rs:15:1
   |
15 | / fn foo<'a, 'b, 'c>(x: &'a mut Vec<Ref<'b, i32>>, y: Ref<'c, i32>) {
16 | |     let a: &mut Vec<Ref<i32>> = x;
17 | |     let b = Ref { data: y.data };
18 | |     a.push(b);
19 | | }
   | |_^
note: ...so that reference does not outlive borrowed content
  --> $DIR/ex2d-push-inference-variable-2.rs:17:25
   |
17 |     let b = Ref { data: y.data };
   |                         ^^^^^^
note: but, the lifetime must be valid for the lifetime 'b as defined on the function body at 15:1...
  --> $DIR/ex2d-push-inference-variable-2.rs:15:1
   |
15 | / fn foo<'a, 'b, 'c>(x: &'a mut Vec<Ref<'b, i32>>, y: Ref<'c, i32>) {
16 | |     let a: &mut Vec<Ref<i32>> = x;
17 | |     let b = Ref { data: y.data };
18 | |     a.push(b);
19 | | }
   | |_^
note: ...so that expression is assignable (expected &mut std::vec::Vec<Ref<'_, i32>>, found &mut std::vec::Vec<Ref<'b, i32>>)
  --> $DIR/ex2d-push-inference-variable-2.rs:16:33
   |
16 |     let a: &mut Vec<Ref<i32>> = x;
   |                                 ^

error: aborting due to previous error