Cacher errors

unlisted ⁨1⁩ ⁨file⁩ 2019-07-30 18:01:34 UTC

error.txt

Raw
error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
  --> src/main.rs:40:9
   |
40 |         num
   |         ^^^
   |
note: first, the lifetime cannot outlive the anonymous lifetime #2 defined on the body at 37:44...
  --> src/main.rs:37:44
   |
37 |       let mut expensive_result = Cacher::new(|num| {
   |  ____________________________________________^
38 | |         println!("calculating...");
39 | |         thread::sleep(Duration::from_secs(2));
40 | |         num
41 | |     });
   | |_____^
   = note: ...so that the expression is assignable:
           expected &u32
              found &u32
note: but, the lifetime must be valid for the call at 37:32...
  --> src/main.rs:37:32
   |
37 |       let mut expensive_result = Cacher::new(|num| {
   |  ________________________________^
38 | |         println!("calculating...");
39 | |         thread::sleep(Duration::from_secs(2));
40 | |         num
41 | |     });
   | |______^
note: ...so type `Cacher<[closure@src/main.rs:37:44: 41:6], u32, &u32>` of expression is valid during the expression
  --> src/main.rs:37:32
   |
37 |       let mut expensive_result = Cacher::new(|num| {
   |  ________________________________^
38 | |         println!("calculating...");
39 | |         thread::sleep(Duration::from_secs(2));
40 | |         num
41 | |     });
   | |______^

error[E0495]: cannot infer an appropriate lifetime due to conflicting requirements
  --> src/main.rs:80:37
   |
80 |         let mut c = Cacher::new(|a| a);
   |                                     ^
   |
note: first, the lifetime cannot outlive the anonymous lifetime #2 defined on the body at 80:33...
  --> src/main.rs:80:33
   |
80 |         let mut c = Cacher::new(|a| a);
   |                                 ^^^^^
   = note: ...so that the expression is assignable:
           expected &i32
              found &i32
note: but, the lifetime must be valid for the call at 80:21...
  --> src/main.rs:80:21
   |
80 |         let mut c = Cacher::new(|a| a);
   |                     ^^^^^^^^^^^^^^^^^^
note: ...so type `Cacher<[closure@src/main.rs:80:33: 80:38], i32, &i32>` of expression is valid during the expression
  --> src/main.rs:80:21
   |
80 |         let mut c = Cacher::new(|a| a);
   |                     ^^^^^^^^^^^^^^^^^^

error: aborting due to 2 previous errors

error: Could not compile `exercise-exercise`.

To learn more, run the command again with --verbose.