-error[E0623]: lifetime mismatch
+error: lifetime may not live long enough
--> $DIR/object-lifetime-default-mybox.rs:27:5
|
LL | fn load1<'a,'b>(a: &'a MyBox<dyn SomeTrait>,
- | ------------------------ this parameter and the return type are declared with different lifetimes...
-LL | b: &'b MyBox<dyn SomeTrait>)
-LL | -> &'b MyBox<dyn SomeTrait>
- | ------------------------
-LL | {
+ | -- -- lifetime `'b` defined here
+ | |
+ | lifetime `'a` defined here
+...
LL | a
- | ^ ...but data from `a` is returned here
-
-error[E0308]: mismatched types
- --> $DIR/object-lifetime-default-mybox.rs:31:11
- |
-LL | load0(ss)
- | ^^ lifetime mismatch
+ | ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
|
- = note: expected reference `&MyBox<(dyn SomeTrait + 'static)>`
- found reference `&MyBox<(dyn SomeTrait + 'a)>`
-note: the lifetime `'a` as defined here...
- --> $DIR/object-lifetime-default-mybox.rs:30:10
+ = help: consider adding the following bound: `'a: 'b`
+
+error[E0521]: borrowed data escapes outside of function
+ --> $DIR/object-lifetime-default-mybox.rs:32:5
|
LL | fn load2<'a>(ss: &MyBox<dyn SomeTrait + 'a>) -> MyBox<dyn SomeTrait + 'a> {
- | ^^
- = note: ...does not necessarily outlive the static lifetime
+ | -- -- `ss` is a reference that is only valid in the function body
+ | |
+ | lifetime `'a` defined here
+LL | load0(ss)
+ | ^^^^^^^^^
+ | |
+ | `ss` escapes the function body here
+ | argument requires that `'a` must outlive `'static`
error: aborting due to 2 previous errors
-Some errors have detailed explanations: E0308, E0623.
-For more information about an error, try `rustc --explain E0308`.
+For more information about this error, try `rustc --explain E0521`.