continue;
}
- let mut err = tcx.struct_span_lint_node(
+ let mut_span = tcx.sess.source_map().span_until_non_whitespace(span);
+ tcx.struct_span_lint_node(
UNUSED_MUT,
vsi[local_decl.source_info.scope].lint_root,
span,
"variable does not need to be mutable",
- );
- let mut_span = tcx.sess.source_map().span_until_non_whitespace(span);
- err.span_suggestion_short_with_applicability(
+ )
+ .span_suggestion_short_with_applicability(
mut_span,
"remove this `mut`",
String::new(),
- Applicability::MachineApplicable);
-
- err.buffer(&mut mbcx.errors_buffer);
+ Applicability::MachineApplicable,
+ )
+ .emit();
}
}
LL | match *s { sty(v) => v } //~ ERROR cannot move out
| ^
-error: aborting due to previous error
+error[E0507]: cannot move out of `s.0` which is behind a `&` reference
+ --> $DIR/access-mode-in-closures.rs:19:24
+ |
+LL | let _foo = unpack(|s| {
+ | - help: consider changing this to be a mutable reference: `&mut sty`
+LL | // Test that `s` is moved here.
+LL | match *s { sty(v) => v } //~ ERROR cannot move out
+ | ^
+ | |
+ | cannot move out of `s.0` which is behind a `&` reference
+ | `s` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/associated-types-project-from-hrtb-in-fn-body.rs:32:29
- |
-LL | fn bar<'a, 'b, I : for<'x> Foo<&'x isize>>(
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let z: I::A = if cond { x } else { y };
- | ^ assignment requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
- --> $DIR/associated-types-project-from-hrtb-in-fn-body.rs:32:40
- |
-LL | fn bar<'a, 'b, I : for<'x> Foo<&'x isize>>(
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let z: I::A = if cond { x } else { y };
- | ^ assignment requires that `'b` must outlive `'a`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/associated-types-subtyping-1.rs:36:13
- |
-LL | fn method2<'a,'b,T>(x: &'a T, y: &'b T)
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let _c: <T as Trait<'b>>::Type = a; //~ ERROR E0623
- | ^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/associated-types-subtyping-1.rs:44:12
- |
-LL | fn method3<'a,'b,T>(x: &'a T, y: &'b T)
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let b: <T as Trait<'b>>::Type = make_any();
- | ^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-contravariant.rs:55:4
- |
-LL | fn transmute<'a,'b>(x: &'a u32, y: &'b u32) -> (&'a u32, &'b u32) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | (a, b) //[krisskross]~ ERROR 55:5: 55:6: lifetime mismatch [E0623]
- | ^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-contravariant.rs:55:4
- |
-LL | fn transmute<'a,'b>(x: &'a u32, y: &'b u32) -> (&'a u32, &'b u32) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | (a, b) //[krisskross]~ ERROR 55:5: 55:6: lifetime mismatch [E0623]
- | ^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-contravariant.rs:48:4
- |
-LL | fn baz<'a,'b>(x: &'a u32) -> &'static u32 {
- | -- lifetime `'a` defined here
-LL | bar(foo, x) //[transmute]~ ERROR E0495
- | ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-contravariant.rs:48:4
- |
-LL | fn baz<'a,'b>(x: &'a u32) -> &'static u32 {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | bar(foo, x) //[transmute]~ ERROR E0495
- | ^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-invariant.rs:65:4
- |
-LL | fn transmute<'a,'b>(x: Type<'a>, y: Type<'b>) -> (Type<'a>, Type<'b>) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | (a, b) //[krisskross]~ ERROR E0623
- | ^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-invariant.rs:65:4
- |
-LL | fn transmute<'a,'b>(x: Type<'a>, y: Type<'b>) -> (Type<'a>, Type<'b>) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | (a, b) //[krisskross]~ ERROR E0623
- | ^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-invariant.rs:48:12
- |
-LL | fn baz<'a,'b>(x: Type<'a>, y: Type<'b>) -> (Type<'a>, Type<'b>) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | let f = foo; // <-- No consistent type can be inferred for `f` here.
-LL | let a = bar(f, x);
- | ^^^^^^^^^ argument requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-invariant.rs:49:12
- |
-LL | fn baz<'a,'b>(x: Type<'a>, y: Type<'b>) -> (Type<'a>, Type<'b>) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let b = bar(f, y); //[oneuse]~ ERROR 49:19: 49:20: lifetime mismatch [E0623]
- | ^^^^^^^^^ argument requires that `'b` must outlive `'a`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-invariant.rs:58:4
- |
-LL | fn baz<'a,'b>(x: Type<'a>) -> Type<'static> {
- | -- lifetime `'a` defined here
-...
-LL | bar(foo, x) //[transmute]~ ERROR E0495
- | ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/project-fn-ret-invariant.rs:58:4
- |
-LL | fn baz<'a,'b>(x: Type<'a>) -> Type<'static> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | bar(foo, x) //[transmute]~ ERROR E0495
- | ^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to 2 previous errors
-
LL | *n; //~ ERROR: cannot move out of borrowed content
| ^^ cannot move out of borrowed content
+error[E0507]: cannot move out of `*n` which is behind a `&` reference
+ --> $DIR/binop-move-semantics.rs:42:5
+ |
+LL | let n = &y;
+ | -- help: consider changing this to be a mutable reference: `&mut y`
+...
+LL | *n; //~ ERROR: cannot move out of borrowed content
+ | ^^
+ | |
+ | cannot move out of `*n` which is behind a `&` reference
+ | `n` is a `&` reference, so the data it refers to cannot be moved
+
error[E0502]: cannot borrow `f` as immutable because it is also borrowed as mutable
--> $DIR/binop-move-semantics.rs:64:5
|
| | immutable borrow later used here
| mutable borrow occurs here
-error: aborting due to 6 previous errors
+error: aborting due to 7 previous errors
Some errors occurred: E0382, E0502, E0507.
For more information about an error, try `rustc --explain E0382`.
LL | c1;
| -- first borrow later used here
-error[E0594]: cannot assign to `x`, as it is not declared as mutable
+warning[E0594]: cannot assign to `x`, as it is not declared as mutable
--> $DIR/borrowck-closures-unique.rs:57:38
|
LL | fn e(x: &'static mut isize) {
| - help: consider changing this to be mutable: `mut x`
LL | let c1 = |y: &'static mut isize| x = y; //~ ERROR closure cannot assign to immutable argument
| ^^^^^ cannot assign
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error: aborting due to 4 previous errors
+error: aborting due to 3 previous errors
Some errors occurred: E0500, E0524, E0594.
For more information about an error, try `rustc --explain E0500`.
LL | *y = 1;
| ------ first borrow later used here
-error: captured variable cannot escape `FnMut` closure body
+warning: captured variable cannot escape `FnMut` closure body
--> $DIR/borrowck-describe-lvalue.rs:305:16
|
LL | || {
|
= note: `FnMut` closures only have access to their captured variables while they are executing...
= note: ...therefore, they cannot allow references to captured variables to escape
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
error[E0503]: cannot use `f.x` because it was mutably borrowed
--> $DIR/borrowck-describe-lvalue.rs:53:9
LL | drop(x);
| - mutable borrow later used here
-error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
+warning[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
--> $DIR/borrowck-describe-lvalue.rs:245:29
|
LL | let x = &mut block;
...
LL | drop(x);
| - mutable borrow later used here
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
+warning[E0502]: cannot borrow `*block.current` as immutable because it is also borrowed as mutable
--> $DIR/borrowck-describe-lvalue.rs:260:33
|
LL | let x = &mut block;
...
LL | drop(x);
| - mutable borrow later used here
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
error[E0382]: use of moved value: `x`
--> $DIR/borrowck-describe-lvalue.rs:318:22
|
= note: move occurs because `x` has type `std::vec::Vec<i32>`, which does not implement the `Copy` trait
-error: aborting due to 32 previous errors
+error: aborting due to 29 previous errors
Some errors occurred: E0382, E0499, E0502, E0503.
For more information about an error, try `rustc --explain E0382`.
--- /dev/null
+error[E0507]: cannot move out of borrowed content
+ --> $DIR/borrowck-fn-in-const-a.rs:19:16
+ |
+LL | return *x //[ast]~ ERROR cannot move out of borrowed content [E0507]
+ | ^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of `*x` which is behind a `&` reference
+ --> $DIR/borrowck-fn-in-const-a.rs:19:16
+ |
+LL | fn broken(x: &String) -> String {
+ | ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL | return *x //[ast]~ ERROR cannot move out of borrowed content [E0507]
+ | ^^
+ | |
+ | cannot move out of `*x` which is behind a `&` reference
+ | `x` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
+error[E0507]: cannot move out of `*__next` which is behind a `&` reference
+ --> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:22:10
+ |
+LL | for &a in x.iter() { //~ ERROR cannot move out
+ | -^
+ | ||
+ | |cannot move out of `*__next` which is behind a `&` reference
+ | |`__next` is a `&` reference, so the data it refers to cannot be moved
+ | help: consider changing this to be a mutable reference: `&mut a`
+
error[E0507]: cannot move out of borrowed content
--> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:22:15
|
LL | for &a in x.iter() { //~ ERROR cannot move out
| ^
+error[E0507]: cannot move out of `*__next` which is behind a `&` reference
+ --> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:28:10
+ |
+LL | for &a in &f.a { //~ ERROR cannot move out
+ | -^
+ | ||
+ | |cannot move out of `*__next` which is behind a `&` reference
+ | |`__next` is a `&` reference, so the data it refers to cannot be moved
+ | help: consider changing this to be a mutable reference: `&mut a`
+
error[E0507]: cannot move out of borrowed content
--> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:28:15
|
LL | for &a in &f.a { //~ ERROR cannot move out
| ^
+error[E0507]: cannot move out of `*__next` which is behind a `&` reference
+ --> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:32:10
+ |
+LL | for &a in x.iter() { //~ ERROR cannot move out
+ | -^
+ | ||
+ | |cannot move out of `*__next` which is behind a `&` reference
+ | |`__next` is a `&` reference, so the data it refers to cannot be moved
+ | help: consider changing this to be a mutable reference: `&mut a`
+
error[E0507]: cannot move out of borrowed content
--> $DIR/borrowck-for-loop-correct-cmt-for-pattern.rs:32:15
|
LL | for &a in x.iter() { //~ ERROR cannot move out
| ^
-error: aborting due to 3 previous errors
+error: aborting due to 6 previous errors
For more information about this error, try `rustc --explain E0507`.
LL | Box::new(|| x) //~ ERROR cannot move out of captured outer variable
| ^ cannot move out of captured variable in an `Fn` closure
-error: aborting due to previous error
+error[E0507]: cannot move out of `x`, as it is a captured variable in a `Fn` closure
+ --> $DIR/borrowck-in-static.rs:15:17
+ |
+LL | Box::new(|| x) //~ ERROR cannot move out of captured outer variable
+ | ^
+ | |
+ | cannot move out of `x`, as it is a captured variable in a `Fn` closure
+ | cannot move
+ |
+help: consider changing this to accept closures that implement `FnMut`
+ --> $DIR/borrowck-in-static.rs:15:14
+ |
+LL | Box::new(|| x) //~ ERROR cannot move out of captured outer variable
+ | ^^^^
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
| cannot move out of borrowed content
| help: consider removing the `*`: `y`
-error: aborting due to previous error
+error[E0507]: cannot move out of `*y` which is behind a `&` reference
+ --> $DIR/borrowck-issue-2657-2.rs:17:18
+ |
+LL | Some(ref y) => {
+ | ----- help: consider changing this to be a mutable reference: `ref mut y`
+LL | let _b = *y; //~ ERROR cannot move out
+ | ^^
+ | |
+ | cannot move out of `*y` which is behind a `&` reference
+ | `y` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
LL | Foo::Foo2(num) => (),
| ^^^
+error[E0507]: cannot move out of `f.0` which is behind a `&` reference
+ --> $DIR/borrowck-move-error-with-note.rs:23:19
+ |
+LL | let f = &Foo::Foo1(box 1, box 2);
+ | ------------------------ help: consider changing this to be a mutable reference: `&mut Foo::Foo1(box 1, box 2)`
+...
+LL | Foo::Foo1(num1,
+ | ^^^^
+ | |
+ | cannot move out of `f.0` which is behind a `&` reference
+ | `f` is a `&` reference, so the data it refers to cannot be moved
+
+error[E0507]: cannot move out of `f.1` which is behind a `&` reference
+ --> $DIR/borrowck-move-error-with-note.rs:24:19
+ |
+LL | let f = &Foo::Foo1(box 1, box 2);
+ | ------------------------ help: consider changing this to be a mutable reference: `&mut Foo::Foo1(box 1, box 2)`
+...
+LL | num2) => (),
+ | ^^^^
+ | |
+ | cannot move out of `f.1` which is behind a `&` reference
+ | `f` is a `&` reference, so the data it refers to cannot be moved
+
+error[E0507]: cannot move out of `f.0` which is behind a `&` reference
+ --> $DIR/borrowck-move-error-with-note.rs:25:19
+ |
+LL | let f = &Foo::Foo1(box 1, box 2);
+ | ------------------------ help: consider changing this to be a mutable reference: `&mut Foo::Foo1(box 1, box 2)`
+...
+LL | Foo::Foo2(num) => (),
+ | ^^^
+ | |
+ | cannot move out of `f.0` which is behind a `&` reference
+ | `f` is a `&` reference, so the data it refers to cannot be moved
+
error[E0509]: cannot move out of type `S`, which implements the `Drop` trait
--> $DIR/borrowck-move-error-with-note.rs:39:11
|
LL | n => {
| ^
-error: aborting due to 3 previous errors
+error[E0507]: cannot move out of `a.a` which is behind a `&` reference
+ --> $DIR/borrowck-move-error-with-note.rs:59:9
+ |
+LL | let a = &A { a: box 1 };
+ | --------------- help: consider changing this to be a mutable reference: `&mut A { a: box 1 }`
+...
+LL | n => {
+ | ^
+ | |
+ | cannot move out of `a.a` which is behind a `&` reference
+ | `a` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 7 previous errors
Some errors occurred: E0507, E0509.
For more information about an error, try `rustc --explain E0507`.
| cannot move out of dereference of raw pointer
| help: consider removing the `*`: `x`
-error: aborting due to previous error
+error[E0507]: cannot move out of `*x` which is behind a `*const` pointer
+ --> $DIR/borrowck-move-from-unsafe-ptr.rs:13:13
+ |
+LL | unsafe fn foo(x: *const Box<isize>) -> Box<isize> {
+ | ----------------- help: consider changing this to be a mutable pointer: `*mut std::boxed::Box<isize>`
+LL | let y = *x; //~ ERROR cannot move out of dereference of raw pointer
+ | ^^
+ | |
+ | cannot move out of `*x` which is behind a `*const` pointer
+ | `x` is a `*const` pointer, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
LL | fn arg_item(&_x: &String) {}
| ^^
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/borrowck-move-in-irrefut-pat.rs:16:14
+ |
+LL | fn arg_item(&_x: &String) {}
+ | ^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
error[E0507]: cannot move out of borrowed content
--> $DIR/borrowck-move-in-irrefut-pat.rs:21:11
|
LL | with(|&_x| ())
| ^^
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/borrowck-move-in-irrefut-pat.rs:21:12
+ |
+LL | with(|&_x| ())
+ | ^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/borrowck-move-in-irrefut-pat.rs:27:10
+ |
+LL | let &_x = &"hi".to_string();
+ | ^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
error[E0507]: cannot move out of borrowed content
--> $DIR/borrowck-move-in-irrefut-pat.rs:27:15
|
LL | let &_x = &"hi".to_string();
| ^^
-error: aborting due to 3 previous errors
+error: aborting due to 6 previous errors
For more information about this error, try `rustc --explain E0507`.
LL | let _x = Rc::new(vec![1, 2]).into_iter();
| ^^^^^^^^^^^^^^^^^^^ cannot move out of an `Rc`
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/borrowck-move-out-of-overloaded-auto-deref.rs:17:14
+ |
+LL | let _x = Rc::new(vec![1, 2]).into_iter();
+ | ^^^^^^^^^^^^^^^^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
| cannot move out of an `Rc`
| help: consider removing the `*`: `Rc::new("hi".to_string())`
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/borrowck-move-out-of-overloaded-deref.rs:14:14
+ |
+LL | let _x = *Rc::new("hi".to_string());
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
--- /dev/null
+error[E0507]: cannot move out of static item
+ --> $DIR/borrowck-move-out-of-static-item.rs:28:10
+ |
+LL | test(BAR); //[ast]~ ERROR cannot move out of static item [E0507]
+ | ^^^ cannot move out of static item
+
+error[E0507]: cannot move out of immutable static item `BAR`
+ --> $DIR/borrowck-move-out-of-static-item.rs:28:10
+ |
+LL | test(BAR); //[ast]~ ERROR cannot move out of static item [E0507]
+ | ^^^
+ | |
+ | cannot move out of immutable static item `BAR`
+ | cannot move
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
LL | Foo { string: b }] => {
|
-error: aborting due to previous error
+error[E0507]: cannot move out of `tail[..].string` which is behind a `&` reference
+ --> $DIR/borrowck-move-out-of-vec-tail.rs:30:33
+ |
+LL | [_, ref tail..] => {
+ | -------- help: consider changing this to be a mutable reference: `ref mut tail`
+LL | match tail {
+LL | &[Foo { string: a },
+ | ^
+ | |
+ | cannot move out of `tail[..].string` which is behind a `&` reference
+ | `tail` is a `&` reference, so the data it refers to cannot be moved
+
+error[E0507]: cannot move out of `tail[..].string` which is behind a `&` reference
+ --> $DIR/borrowck-move-out-of-vec-tail.rs:34:33
+ |
+LL | [_, ref tail..] => {
+ | -------- help: consider changing this to be a mutable reference: `ref mut tail`
+...
+LL | Foo { string: b }] => {
+ | ^
+ | |
+ | cannot move out of `tail[..].string` which is behind a `&` reference
+ | `tail` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 3 previous errors
-For more information about this error, try `rustc --explain E0508`.
+Some errors occurred: E0507, E0508.
+For more information about an error, try `rustc --explain E0507`.
| cannot move out of borrowed content
| help: consider borrowing here: `&v[0]`
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/borrowck-overloaded-index-move-from-vec.rs:30:15
+ |
+LL | let bad = v[0];
+ | ^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/borrowck-reborrow-from-shorter-lived-andmut.rs:19:5
- |
-LL | fn copy_borrowed_ptr<'a,'b>(p: &'a mut S<'b>) -> S<'b> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | S { pointer: &mut *p.pointer }
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to previous error
-
LL | let opt = a.iter().enumerate().find(|(_, &s)| {
| ^
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-51415.rs:16:47
+ |
+LL | let opt = a.iter().enumerate().find(|(_, &s)| {
+ | ^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
+++ /dev/null
-error: borrowed data escapes outside of closure
- --> $DIR/issue-7573.rs:32:9
- |
-LL | let mut lines_to_use: Vec<&CrateId> = Vec::new();
- | ---------------- `lines_to_use` is declared here, outside of the closure body
-LL | //~^ NOTE cannot infer an appropriate lifetime
-LL | let push_id = |installed_id: &CrateId| {
- | ------------ `installed_id` is a reference that is only valid in the closure body
-...
-LL | lines_to_use.push(installed_id);
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `installed_id` escapes the closure body here
-
-error: aborting due to previous error
-
--- /dev/null
+error[E0507]: cannot move out of borrowed content
+ --> $DIR/move-in-static-initializer-issue-38520.rs:25:23
+ |
+LL | static Y: usize = get(*&X); //[ast]~ ERROR E0507
+ | ^^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/move-in-static-initializer-issue-38520.rs:25:23
+ |
+LL | static Y: usize = get(*&X); //[ast]~ ERROR E0507
+ | ^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error[E0507]: cannot move out of borrowed content
+ --> $DIR/move-in-static-initializer-issue-38520.rs:27:22
+ |
+LL | const Z: usize = get(*&X); //[ast]~ ERROR E0507
+ | ^^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/move-in-static-initializer-issue-38520.rs:27:22
+ |
+LL | const Z: usize = get(*&X); //[ast]~ ERROR E0507
+ | ^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 4 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
LL | &mut x.0; //~ ERROR
| ^^^^^^^^ cannot borrow as mutable
-error[E0594]: cannot assign to `x`, as it is not declared as mutable
+warning[E0594]: cannot assign to `x`, as it is not declared as mutable
--> $DIR/mutability-errors.rs:70:9
|
LL | fn imm_capture(x: (i32,)) {
LL | || { //~ ERROR
LL | x = (1,);
| ^^^^^^^^ cannot assign
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error[E0594]: cannot assign to `x.0`, as `x` is not declared as mutable
+warning[E0594]: cannot assign to `x.0`, as `x` is not declared as mutable
--> $DIR/mutability-errors.rs:71:9
|
LL | fn imm_capture(x: (i32,)) {
...
LL | x.0 = 1;
| ^^^^^^^ cannot assign
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
+warning[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/mutability-errors.rs:72:9
|
LL | fn imm_capture(x: (i32,)) {
...
LL | &mut x;
| ^^^^^^ cannot borrow as mutable
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error[E0596]: cannot borrow `x.0` as mutable, as `x` is not declared as mutable
+warning[E0596]: cannot borrow `x.0` as mutable, as `x` is not declared as mutable
--> $DIR/mutability-errors.rs:73:9
|
LL | fn imm_capture(x: (i32,)) {
...
LL | &mut x.0;
| ^^^^^^^^ cannot borrow as mutable
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
error[E0594]: cannot assign to `x`, as it is not declared as mutable
--> $DIR/mutability-errors.rs:76:9
LL | &mut X.0; //~ ERROR
| ^^^^^^^^ cannot borrow as mutable
-error: aborting due to 38 previous errors
+error: aborting due to 34 previous errors
Some errors occurred: E0594, E0596.
For more information about an error, try `rustc --explain E0594`.
+++ /dev/null
-error: borrowed data escapes outside of closure
- --> $DIR/regions-escape-bound-fn-2.rs:18:18
- |
-LL | let mut x = None;
- | ----- `x` is declared here, outside of the closure body
-LL | with_int(|y| x = Some(y));
- | - ^^^^^^^^^^^ `y` escapes the closure body here
- | |
- | `y` is a reference that is only valid in the closure body
-
-error: aborting due to previous error
-
+++ /dev/null
-error: borrowed data escapes outside of closure
- --> $DIR/regions-escape-bound-fn.rs:18:18
- |
-LL | let mut x: Option<&isize> = None;
- | ----- `x` is declared here, outside of the closure body
-LL | with_int(|y| x = Some(y));
- | - ^^^^^^^^^^^ `y` escapes the closure body here
- | |
- | `y` is a reference that is only valid in the closure body
-
-error: aborting due to previous error
-
+++ /dev/null
-error: borrowed data escapes outside of closure
- --> $DIR/regions-escape-unboxed-closure.rs:16:23
- |
-LL | let mut x: Option<&isize> = None;
- | ----- `x` is declared here, outside of the closure body
-LL | with_int(&mut |y| x = Some(y));
- | - ^^^^^^^^^^^ `y` escapes the closure body here
- | |
- | `y` is a reference that is only valid in the closure body
-
-error: aborting due to previous error
-
LL | y.into_iter();
| ^ cannot move out of captured variable in an `Fn` closure
-error: aborting due to previous error
+error[E0507]: cannot move out of `y`, as it is a captured variable in a `Fn` closure
+ --> $DIR/unboxed-closures-move-upvar-from-non-once-ref-closure.rs:21:9
+ |
+LL | y.into_iter();
+ | ^
+ | |
+ | cannot move out of `y`, as it is a captured variable in a `Fn` closure
+ | cannot move
+ |
+help: consider changing this to accept closures that implement `FnMut`
+ --> $DIR/unboxed-closures-move-upvar-from-non-once-ref-closure.rs:20:10
+ |
+LL | call(|| {
+ | __________^
+LL | | y.into_iter();
+LL | | //~^ ERROR cannot move out of captured outer variable in an `Fn` closure
+LL | | });
+ | |_____^
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
LL | &E::Bar(identifier) => f(identifier.clone()) //~ ERROR cannot move
| ^^^^^^^^^^
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/by-move-pattern-binding.rs:26:17
+ |
+LL | &E::Bar(identifier) => f(identifier.clone()) //~ ERROR cannot move
+ | ^^^^^^^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
| cannot move out of static item
| help: consider borrowing here: `&x`
+error[E0507]: cannot move out of immutable static item `x`
+ --> $DIR/check-static-values-constraints.rs:120:45
+ |
+LL | let y = { static x: Box<isize> = box 3; x };
+ | ^
+ | |
+ | cannot move out of immutable static item `x`
+ | cannot move
+
error[E0010]: allocations are not allowed in statics
--> $DIR/check-static-values-constraints.rs:120:38
|
LL | let y = { static x: Box<isize> = box 3; x };
| ^^^^^ allocation not allowed in statics
-error: aborting due to 10 previous errors
+error: aborting due to 11 previous errors
Some errors occurred: E0010, E0015, E0493, E0507.
For more information about an error, try `rustc --explain E0010`.
+++ /dev/null
-error[E0631]: type mismatch in closure arguments
- --> $DIR/expect-fn-supply-fn.rs:40:5
- |
-LL | with_closure_expecting_fn_with_free_region(|x: fn(&u32), y| {});
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------- found signature of `fn(for<'r> fn(&'r u32), _) -> _`
- | |
- | expected signature of `for<'a, 'r> fn(fn(&'a u32), &'r i32) -> _`
- |
-note: required by `with_closure_expecting_fn_with_free_region`
- --> $DIR/expect-fn-supply-fn.rs:11:1
- |
-LL | / fn with_closure_expecting_fn_with_free_region<F>(_: F)
-LL | | where F: for<'a> FnOnce(fn(&'a u32), &i32)
-LL | | {
-LL | | }
- | |_^
-
-error[E0631]: type mismatch in closure arguments
- --> $DIR/expect-fn-supply-fn.rs:47:5
- |
-LL | with_closure_expecting_fn_with_bound_region(|x: fn(&'x u32), y| {});
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------- found signature of `fn(fn(&'x u32), _) -> _`
- | |
- | expected signature of `for<'r> fn(for<'s> fn(&'s u32), &'r i32) -> _`
- |
-note: required by `with_closure_expecting_fn_with_bound_region`
- --> $DIR/expect-fn-supply-fn.rs:16:1
- |
-LL | / fn with_closure_expecting_fn_with_bound_region<F>(_: F)
-LL | | where F: FnOnce(fn(&u32), &i32)
-LL | | {
-LL | | }
- | |_^
-
-error[E0631]: type mismatch in closure arguments
- --> $DIR/expect-fn-supply-fn.rs:56:5
- |
-LL | with_closure_expecting_fn_with_bound_region(|_x: Foo<'_>, y| {});
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------------- found signature of `for<'r> fn(fn(&'r u32), _) -> _`
- | |
- | expected signature of `for<'r> fn(for<'s> fn(&'s u32), &'r i32) -> _`
- |
-note: required by `with_closure_expecting_fn_with_bound_region`
- --> $DIR/expect-fn-supply-fn.rs:16:1
- |
-LL | / fn with_closure_expecting_fn_with_bound_region<F>(_: F)
-LL | | where F: FnOnce(fn(&u32), &i32)
-LL | | {
-LL | | }
- | |_^
-
-error: aborting due to 3 previous errors
-
-For more information about this error, try `rustc --explain E0631`.
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `x`
- --> $DIR/closure-bounds-static-cant-capture-borrowed.rs:15:5
- |
-LL | fn foo(x: &()) {
- | --- help: add explicit lifetime `'static` to the type of `x`: `&'static ()`
-LL | / bar(|| {
-LL | | //~^ ERROR explicit lifetime required in the type of `x` [E0621]
-LL | | let _ = x;
-LL | | })
- | |______^ lifetime `'static` required
-
-error[E0597]: `x` does not live long enough
- --> $DIR/closure-bounds-static-cant-capture-borrowed.rs:17:17
- |
-LL | bar(|| {
- | -- value captured here
-LL | //~^ ERROR explicit lifetime required in the type of `x` [E0621]
-LL | let _ = x;
- | ^ borrowed value does not live long enough
-LL | })
-LL | }
- | - `x` dropped here while still borrowed
- |
- = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 2 previous errors
-
-Some errors occurred: E0597, E0621.
-For more information about an error, try `rustc --explain E0597`.
+++ /dev/null
-error: borrowed data escapes outside of closure
- --> $DIR/expect-region-supply-region.rs:28:9
- |
-LL | let mut f: Option<&u32> = None;
- | ----- `f` is declared here, outside of the closure body
-LL | closure_expecting_bound(|x| {
- | - `x` is a reference that is only valid in the closure body
-LL | f = Some(x); //~ ERROR borrowed data cannot be stored outside of its closure
- | ^^^^^^^^^^^ `x` escapes the closure body here
-
-error: borrowed data escapes outside of closure
- --> $DIR/expect-region-supply-region.rs:38:9
- |
-LL | let mut f: Option<&u32> = None;
- | ----- `f` is declared here, outside of the closure body
-LL | closure_expecting_bound(|x: &u32| {
- | - `x` is a reference that is only valid in the closure body
-LL | f = Some(x); //~ ERROR borrowed data cannot be stored outside of its closure
- | ^^^^^^^^^^^ `x` escapes the closure body here
-
-error: borrowed data escapes outside of closure
- --> $DIR/expect-region-supply-region.rs:52:9
- |
-LL | let mut f: Option<&u32> = None;
- | ----- `f` is declared here, outside of the closure body
-...
-LL | closure_expecting_bound(|x: &'x u32| {
- | - `x` is a reference that is only valid in the closure body
-...
-LL | f = Some(x);
- | ^^^^^^^^^^^ `x` escapes the closure body here
-
-error: aborting due to 3 previous errors
-
LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-error[E0716]: temporary value dropped while borrowed
+warning[E0716]: temporary value dropped while borrowed
--> $DIR/min_const_fn.rs:142:64
|
LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
| creates a temporary which is freed while still in use
|
= note: borrowed value must be valid for the static lifetime...
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
error: trait bounds other than `Sized` on const fn parameters are unstable
--> $DIR/min_const_fn.rs:147:41
LL | const fn no_fn_ptrs2() -> fn() { fn foo() {} foo }
| ^^^^
-error: aborting due to 36 previous errors
+error: aborting due to 35 previous errors
Some errors occurred: E0493, E0716.
For more information about an error, try `rustc --explain E0493`.
LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
| ^^
-error[E0716]: temporary value dropped while borrowed
+warning[E0716]: temporary value dropped while borrowed
--> $DIR/min_const_fn_dyn.rs:22:67
|
LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
| creates a temporary which is freed while still in use
|
= note: borrowed value must be valid for the static lifetime...
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error: aborting due to 3 previous errors
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0716`.
LL | S[0];
| ^^^^ cannot move out of borrowed content
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/dst-index.rs:41:5
+ |
+LL | S[0];
+ | ^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
error[E0507]: cannot move out of borrowed content
--> $DIR/dst-index.rs:44:5
|
LL | T[0];
| ^^^^ cannot move out of borrowed content
-error: aborting due to 4 previous errors
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/dst-index.rs:44:5
+ |
+LL | T[0];
+ | ^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 6 previous errors
Some errors occurred: E0161, E0507.
For more information about an error, try `rustc --explain E0161`.
LL | let _x: Box<str> = box *"hello world";
| ^^^^^^^^^^^^^^ cannot move out of borrowed content
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/dst-rvalue.rs:16:28
+ |
+LL | let _x: Box<str> = box *"hello world";
+ | ^^^^^^^^^^^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
error[E0508]: cannot move out of type `[isize]`, a non-copy slice
--> $DIR/dst-rvalue.rs:21:32
|
LL | let _x: Box<[isize]> = box *array;
| ^^^^^^ cannot move out of here
-error: aborting due to 4 previous errors
+error[E0507]: cannot move out of `*array` which is behind a `&` reference
+ --> $DIR/dst-rvalue.rs:21:32
+ |
+LL | let array: &[isize] = &[1, 2, 3];
+ | ---------- help: consider changing this to be a mutable reference: `&mut [1, 2, 3]`
+LL | let _x: Box<[isize]> = box *array;
+ | ^^^^^^
+ | |
+ | cannot move out of `*array` which is behind a `&` reference
+ | `array` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 6 previous errors
Some errors occurred: E0161, E0507, E0508.
For more information about an error, try `rustc --explain E0161`.
--- /dev/null
+error[E0507]: cannot move out of borrowed content
+ --> $DIR/E0507.rs:22:5
+ |
+LL | x.borrow().nothing_is_true(); //~ ERROR E0507
+ | ^^^^^^^^^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/E0507.rs:22:5
+ |
+LL | x.borrow().nothing_is_true(); //~ ERROR E0507
+ | ^^^^^^^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/E0621-does-not-trigger-for-closures.rs:25:45
- |
-LL | invoke(&x, |a, b| if a > b { a } else { b }); //~ ERROR E0495
- | -- ^ returning this value requires that `'1` must outlive `'2`
- | ||
- | |return type of closure is &'2 i32
- | has type `&'1 i32`
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0308]: mismatched types
- --> $DIR/generic_type_does_not_live_long_enough.rs:16:18
- |
-LL | let z: i32 = x; //~ ERROR mismatched types
- | ^ expected i32, found opaque type
- |
- = note: expected type `i32`
- found type `WrongGeneric::<&{integer}>`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/hr-subtype.rs:43:13
- |
-LL | fn subtype<'x,'y:'x,'z:'y>() {
- | -- -- lifetime `'y` defined here
- | |
- | lifetime `'x` defined here
-LL | gimme::<$t2>(None::<$t1>);
- | ^^^^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'x` must outlive `'y`
-...
-LL | / check! { free_inv_x_vs_free_inv_y: (fn(Inv<'x>),
-LL | | fn(Inv<'y>)) }
- | |__________________________________________________- in this macro invocation
-
-error: unsatisfied lifetime constraints
- --> $DIR/hr-subtype.rs:49:13
- |
-LL | fn supertype<'x,'y:'x,'z:'y>() {
- | -- -- lifetime `'y` defined here
- | |
- | lifetime `'x` defined here
-LL | gimme::<$t1>(None::<$t2>);
- | ^^^^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'x` must outlive `'y`
-...
-LL | / check! { free_inv_x_vs_free_inv_y: (fn(Inv<'x>),
-LL | | fn(Inv<'y>)) }
- | |__________________________________________________- in this macro invocation
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/hr-subtype.rs:49:13
- |
-LL | fn supertype<'x,'y:'x,'z:'y>() {
- | -- -- lifetime `'y` defined here
- | |
- | lifetime `'x` defined here
-LL | gimme::<$t1>(None::<$t2>);
- | ^^^^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'x` must outlive `'y`
-...
-LL | / check! { free_x_vs_free_y: (fn(&'x u32),
-LL | | fn(&'y u32)) }
- | |__________________________________________- in this macro invocation
-
-error: aborting due to previous error
-
+++ /dev/null
-error: borrowed data escapes outside of function
- --> $DIR/dyn-trait.rs:32:5
- |
-LL | fn with_dyn_debug_static<'a>(x: Box<dyn Debug + 'a>) {
- | - `x` is a reference that is only valid in the function body
-LL | static_val(x); //~ ERROR cannot infer
- | ^^^^^^^^^^^^^ `x` escapes the function body here
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `x`
- --> $DIR/must_outlive_least_region_or_bound.rs:13:35
- |
-LL | fn elided(x: &i32) -> impl Copy { x }
- | ---- ^ lifetime `'static` required
- | |
- | help: add explicit lifetime `'static` to the type of `x`: `&'static i32`
-
-error: unsatisfied lifetime constraints
- --> $DIR/must_outlive_least_region_or_bound.rs:16:44
- |
-LL | fn explicit<'a>(x: &'a i32) -> impl Copy { x }
- | -- lifetime `'a` defined here ^ returning this value requires that `'a` must outlive `'static`
-help: to allow this impl Trait to capture borrowed data with lifetime `'a`, add `'a` as a constraint
- |
-LL | fn explicit<'a>(x: &'a i32) -> impl Copy + 'a { x }
- | ^^^^^^^^^^^^^^
-
-error: unsatisfied lifetime constraints
- --> $DIR/must_outlive_least_region_or_bound.rs:22:69
- |
-LL | fn with_bound<'a>(x: &'a i32) -> impl LifetimeTrait<'a> + 'static { x }
- | -- lifetime `'a` defined here ^ returning this value requires that `'a` must outlive `'static`
- |
- = help: consider replacing `'a` with `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/must_outlive_least_region_or_bound.rs:29:5
- |
-LL | fn move_lifetime_into_fn<'a, 'b>(x: &'a u32, y: &'b u32) -> impl Fn(&'a u32) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | //~^ ERROR lifetime mismatch
-LL | move |_| println!("{}", y)
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-
-error[E0310]: the parameter type `T` may not live long enough
- --> $DIR/must_outlive_least_region_or_bound.rs:32:51
- |
-LL | fn ty_param_wont_outlive_static<T:Debug>(x: T) -> impl Debug + 'static {
- | ^^^^^^^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error: aborting due to 5 previous errors
-
-Some errors occurred: E0310, E0621.
-For more information about an error, try `rustc --explain E0310`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/static-return-lifetime-infered.rs:17:9
- |
-LL | fn iter_values_anon(&self) -> impl Iterator<Item=u32> {
- | - let's call the lifetime of this reference `'1`
-LL | self.x.iter().map(|a| a.0)
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static`
-help: to allow this impl Trait to capture borrowed data with lifetime `'1`, add `'_` as a constraint
- |
-LL | fn iter_values_anon(&self) -> impl Iterator<Item=u32> + '_ {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: unsatisfied lifetime constraints
- --> $DIR/static-return-lifetime-infered.rs:21:9
- |
-LL | fn iter_values<'a>(&'a self) -> impl Iterator<Item=u32> {
- | -- lifetime `'a` defined here
-LL | self.x.iter().map(|a| a.0)
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-help: to allow this impl Trait to capture borrowed data with lifetime `'a`, add `'a` as a constraint
- |
-LL | fn iter_values<'a>(&'a self) -> impl Iterator<Item=u32> + 'a {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error[E0310]: the parameter type `T` may not live long enough
- --> $DIR/type_parameters_captured.rs:17:20
- |
-LL | fn foo<T>(x: T) -> impl Any + 'static {
- | ^^^^^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0310`.
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `y`
- --> $DIR/mismatched.rs:14:42
- |
-LL | fn foo(x: &'a u32, y: &u32) -> &'a u32 { y } //~ ERROR explicit lifetime required
- | ---- ^ lifetime `'a` required
- | |
- | help: add explicit lifetime `'a` to the type of `y`: `&'a u32`
-
-error: unsatisfied lifetime constraints
- --> $DIR/mismatched.rs:16:46
- |
-LL | fn foo2(x: &'a u32, y: &'b u32) -> &'a u32 { y } //~ ERROR lifetime mismatch
- | -- -- ^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
- | | |
- | | lifetime `'b` defined here
- | lifetime `'a` defined here
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/issue-10291.rs:13:9
- |
-LL | fn test<'x>(x: &'x isize) {
- | -- lifetime `'x` defined here
-LL | drop::<Box<for<'z> FnMut(&'z isize) -> &'z isize>>(Box::new(|z| {
-LL | x //~ ERROR E0312
- | ^ returning this value requires that `'x` must outlive `'static`
-
-error: aborting due to previous error
-
LL | (&[hd1, ..], &[hd2, ..])
| ^^^
-error: aborting due to 2 previous errors
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-12567.rs:16:17
+ |
+LL | (&[], &[hd, ..]) | (&[hd, ..], &[])
+ | ^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-12567.rs:16:31
+ |
+LL | (&[], &[hd, ..]) | (&[hd, ..], &[])
+ | ^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-12567.rs:20:12
+ |
+LL | (&[hd1, ..], &[hd2, ..])
+ | ^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-12567.rs:20:24
+ |
+LL | (&[hd1, ..], &[hd2, ..])
+ | ^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 6 previous errors
-For more information about this error, try `rustc --explain E0508`.
+Some errors occurred: E0507, E0508.
+For more information about an error, try `rustc --explain E0507`.
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `cont`
- --> $DIR/issue-13058.rs:24:21
- |
-LL | fn check<'r, I: Iterator<Item=usize>, T: Itble<'r, usize, I>>(cont: &T) -> bool
- | -- help: add explicit lifetime `'r` to the type of `cont`: `&'r T`
-LL | {
-LL | let cont_iter = cont.iter();
- | ^^^^^^^^^^^ lifetime `'r` required
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `lexer`
- --> $DIR/issue-15034.rs:27:9
- |
-LL | pub fn new(lexer: &'a mut Lexer) -> Parser<'a> {
- | ------------- help: add explicit lifetime `'a` to the type of `lexer`: `&'a mut Lexer<'a>`
-LL | Parser { lexer: lexer }
- | ^^^^^^^^^^^^^^^^^^^^^^^ lifetime `'a` required
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error: borrowed data escapes outside of function
- --> $DIR/issue-16683.rs:14:9
- |
-LL | fn b(&self) {
- | ----- `self` is a reference that is only valid in the function body
-LL | self.a(); //~ ERROR cannot infer
- | ^^^^^^^^ `self` escapes the function body here
-
-error: aborting due to previous error
-
| cannot move out of static item
| help: consider borrowing here: `&FOO`
-error: aborting due to previous error
+error[E0507]: cannot move out of immutable static item `FOO`
+ --> $DIR/issue-17718-static-move.rs:16:14
+ |
+LL | let _a = FOO; //~ ERROR: cannot move out of static item
+ | ^^^
+ | |
+ | cannot move out of immutable static item `FOO`
+ | cannot move
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
+++ /dev/null
-error[E0308]: match arms have incompatible types
- --> $DIR/issue-17728.rs:110:5
- |
-LL | / match to_parse { //~ ERROR match arms have incompatible types
-LL | | "w" | "west" => RoomDirection::West,
-LL | | "e" | "east" => RoomDirection::East,
-LL | | "n" | "north" => RoomDirection::North,
-... |
-LL | | _ => None
- | | ---- match arm with an incompatible type
-LL | | }
- | |_____^ expected enum `RoomDirection`, found enum `std::option::Option`
- |
- = note: expected type `RoomDirection`
- found type `std::option::Option<_>`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
+++ /dev/null
-error: borrowed data escapes outside of function
- --> $DIR/issue-17758.rs:17:9
- |
-LL | fn bar(&self) {
- | ----- `self` is a reference that is only valid in the function body
-LL | self.foo();
- | ^^^^^^^^^^ `self` escapes the function body here
-
-error: aborting due to previous error
-
| cannot move out of borrowed content
| help: consider removing the `*`: `imm_ref()`
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-20801.rs:39:22
+ |
+LL | let b = unsafe { *imm_ref() };
+ | ^^^^^^^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
error[E0507]: cannot move out of dereference of raw pointer
--> $DIR/issue-20801.rs:42:22
|
| cannot move out of dereference of raw pointer
| help: consider removing the `*`: `const_ptr()`
-error: aborting due to 4 previous errors
+error[E0507]: cannot move out of data in a `*const` pointer
+ --> $DIR/issue-20801.rs:45:22
+ |
+LL | let d = unsafe { *const_ptr() };
+ | ^^^^^^^^^^^^
+ | |
+ | cannot move out of data in a `*const` pointer
+ | cannot move
+
+error: aborting due to 6 previous errors
For more information about this error, try `rustc --explain E0507`.
LL | self.tokens //~ ERROR cannot move out of borrowed content
| ^^^^^^^^^^^ cannot move out of borrowed content
-error: aborting due to previous error
+error[E0507]: cannot move out of `self.tokens` which is behind a `&` reference
+ --> $DIR/issue-2590.rs:22:9
+ |
+LL | fn parse(&self) -> Vec<isize> {
+ | ----- help: consider changing this to be a mutable reference: `&mut self`
+LL | self.tokens //~ ERROR cannot move out of borrowed content
+ | ^^^^^^^^^^^
+ | |
+ | cannot move out of `self.tokens` which is behind a `&` reference
+ | `self` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
+++ /dev/null
-error[E0131]: `main` function is not allowed to have generic parameters
- --> $DIR/issue-26217.rs:13:8
- |
-LL | fn main<'a>() {
- | ^^^^ `main` cannot have generic parameters
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0131`.
LL | &X(*Y)
| ^^ cannot move out of here
-error: aborting due to 3 previous errors
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-30355.rs:15:8
+ |
+LL | &X(*Y)
+ | ^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 4 previous errors
-Some errors occurred: E0161, E0508.
+Some errors occurred: E0161, E0507, E0508.
For more information about an error, try `rustc --explain E0161`.
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `y`
- --> $DIR/issue-40288-2.rs:17:9
- |
-LL | fn lifetime_transmute_slice<'a, T: ?Sized>(x: &'a T, y: &T) -> &'a T {
- | -- help: add explicit lifetime `'a` to the type of `y`: `&'a T`
-...
-LL | slice[0] = y;
- | ^^^^^^^^^^^^ lifetime `'a` required
-
-error[E0621]: explicit lifetime required in the type of `y`
- --> $DIR/issue-40288-2.rs:32:9
- |
-LL | fn lifetime_transmute_struct<'a, T: ?Sized>(x: &'a T, y: &T) -> &'a T {
- | -- help: add explicit lifetime `'a` to the type of `y`: `&'a T`
-...
-LL | dst.head = y;
- | ^^^^^^^^^^^^ lifetime `'a` required
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
| cannot move out of borrowed content
| help: consider borrowing here: `&f.v[0]`
-error: aborting due to previous error
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-40402-1.rs:19:13
+ |
+LL | let e = f.v[0]; //~ ERROR cannot move out of indexed content
+ | ^^^^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-40402-2.rs:15:10
+ |
+LL | let (a, b) = x[0]; //~ ERROR cannot move out of indexed content
+ | ^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/issue-40402-2.rs:15:13
+ |
+LL | let (a, b) = x[0]; //~ ERROR cannot move out of indexed content
+ | ^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
error[E0507]: cannot move out of borrowed content
--> $DIR/issue-40402-2.rs:15:18
|
LL | let (a, b) = x[0]; //~ ERROR cannot move out of indexed content
| ^ ^
-error: aborting due to previous error
+error: aborting due to 3 previous errors
For more information about this error, try `rustc --explain E0507`.
-error: captured variable cannot escape `FnMut` closure body
+warning: captured variable cannot escape `FnMut` closure body
--> $DIR/issue-40510-1.rs:18:9
|
LL | || {
|
= note: `FnMut` closures only have access to their captured variables while they are executing...
= note: ...therefore, they cannot allow references to captured variables to escape
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
+
+error: compilation successful
+ --> $DIR/issue-40510-1.rs:23:1
+ |
+LL | fn main() {} //~ ERROR compilation successful
+ | ^^^^^^^^^^^^
error: aborting due to previous error
-error: captured variable cannot escape `FnMut` closure body
+warning: captured variable cannot escape `FnMut` closure body
--> $DIR/issue-40510-3.rs:18:9
|
LL | || {
|
= note: `FnMut` closures only have access to their captured variables while they are executing...
= note: ...therefore, they cannot allow references to captured variables to escape
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
+
+error: compilation successful
+ --> $DIR/issue-40510-3.rs:25:1
+ |
+LL | fn main() {} //~ ERROR compilation successful
+ | ^^^^^^^^^^^^
error: aborting due to previous error
LL | id(Box::new(|| *v))
| ^^ cannot move out of captured variable in an `FnMut` closure
+error[E0507]: cannot move out of `*v` which is behind a `&` reference
+ --> $DIR/issue-4335.rs:16:20
+ |
+LL | id(Box::new(|| *v))
+ | ^^
+ | |
+ | cannot move out of `*v` which is behind a `&` reference
+ | cannot move
+
error[E0597]: `v` does not live long enough
--> $DIR/issue-4335.rs:16:21
|
LL | fn f<'r, T>(v: &'r T) -> Box<FnMut() -> T + 'r> {
| ^^
-error: aborting due to 2 previous errors
+error: aborting due to 3 previous errors
Some errors occurred: E0507, E0597.
For more information about an error, try `rustc --explain E0507`.
-error: captured variable cannot escape `FnMut` closure body
+warning: captured variable cannot escape `FnMut` closure body
--> $DIR/issue-49824.rs:22:9
|
LL | || {
|
= note: `FnMut` closures only have access to their captured variables while they are executing...
= note: ...therefore, they cannot allow references to captured variables to escape
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
+
+error: compilation successful
+ --> $DIR/issue-49824.rs:18:1
+ |
+LL | / fn main() {
+LL | | //~^ compilation successful
+LL | | let mut x = 0;
+LL | | || {
+... |
+LL | | };
+LL | | }
+ | |_^
error: aborting due to previous error
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/issue-52213.rs:13:20
- |
-LL | fn transmute_lifetime<'a, 'b, T>(t: &'a (T,)) -> &'b T {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | match (&t,) { //~ ERROR cannot infer an appropriate lifetime
-LL | ((u,),) => u,
- | ^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/issue-52533-1.rs:19:18
- |
-LL | gimme(|x, y| y)
- | - - ^ closure was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
- | | |
- | | has type `&Foo<'_, '1, u32>`
- | has type `&Foo<'_, '2, u32>`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/issue-52533.rs:15:16
- |
-LL | foo(|a, b| b)
- | - - ^ closure was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
- | | |
- | | has type `&'1 u32`
- | has type `&'2 u32`
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0277]: `T` cannot be sent between threads safely
- --> $DIR/kindck-impl-type-params.rs:28:13
- |
-LL | let a = &t as &Gettable<T>;
- | ^^ `T` cannot be sent between threads safely
- |
- = help: the trait `std::marker::Send` is not implemented for `T`
- = help: consider adding a `where T: std::marker::Send` bound
- = note: required because of the requirements on the impl of `Gettable<T>` for `S<T>`
- = note: required for the cast to the object type `dyn Gettable<T>`
-
-error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied
- --> $DIR/kindck-impl-type-params.rs:28:13
- |
-LL | let a = &t as &Gettable<T>;
- | ^^ the trait `std::marker::Copy` is not implemented for `T`
- |
- = help: consider adding a `where T: std::marker::Copy` bound
- = note: required because of the requirements on the impl of `Gettable<T>` for `S<T>`
- = note: required for the cast to the object type `dyn Gettable<T>`
-
-error[E0277]: `T` cannot be sent between threads safely
- --> $DIR/kindck-impl-type-params.rs:35:27
- |
-LL | let a: &Gettable<T> = &t;
- | ^^ `T` cannot be sent between threads safely
- |
- = help: the trait `std::marker::Send` is not implemented for `T`
- = help: consider adding a `where T: std::marker::Send` bound
- = note: required because of the requirements on the impl of `Gettable<T>` for `S<T>`
- = note: required for the cast to the object type `dyn Gettable<T>`
-
-error[E0277]: the trait bound `T: std::marker::Copy` is not satisfied
- --> $DIR/kindck-impl-type-params.rs:35:27
- |
-LL | let a: &Gettable<T> = &t;
- | ^^ the trait `std::marker::Copy` is not implemented for `T`
- |
- = help: consider adding a `where T: std::marker::Copy` bound
- = note: required because of the requirements on the impl of `Gettable<T>` for `S<T>`
- = note: required for the cast to the object type `dyn Gettable<T>`
-
-error[E0277]: the trait bound `std::string::String: std::marker::Copy` is not satisfied
- --> $DIR/kindck-impl-type-params.rs:48:13
- |
-LL | let a = t as Box<Gettable<String>>;
- | ^ the trait `std::marker::Copy` is not implemented for `std::string::String`
- |
- = note: required because of the requirements on the impl of `Gettable<std::string::String>` for `S<std::string::String>`
- = note: required for the cast to the object type `dyn Gettable<std::string::String>`
-
-error[E0277]: the trait bound `foo3::Foo: std::marker::Copy` is not satisfied
- --> $DIR/kindck-impl-type-params.rs:56:33
- |
-LL | let a: Box<Gettable<Foo>> = t;
- | ^ the trait `std::marker::Copy` is not implemented for `foo3::Foo`
- |
- = note: required because of the requirements on the impl of `Gettable<foo3::Foo>` for `S<foo3::Foo>`
- = note: required for the cast to the object type `dyn Gettable<foo3::Foo>`
-
-error: aborting due to 6 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
+++ /dev/null
-error[E0277]: `(dyn Dummy + 'a)` cannot be shared between threads safely
- --> $DIR/kindck-send-object1.rs:20:5
- |
-LL | assert_send::<&'a Dummy>();
- | ^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn Dummy + 'a)` cannot be shared between threads safely
- |
- = help: the trait `std::marker::Sync` is not implemented for `(dyn Dummy + 'a)`
- = note: required because of the requirements on the impl of `std::marker::Send` for `&'a (dyn Dummy + 'a)`
-note: required by `assert_send`
- --> $DIR/kindck-send-object1.rs:15:1
- |
-LL | fn assert_send<T:Send+'static>() { }
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error[E0277]: `(dyn Dummy + 'a)` cannot be sent between threads safely
- --> $DIR/kindck-send-object1.rs:39:5
- |
-LL | assert_send::<Box<Dummy+'a>>();
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `(dyn Dummy + 'a)` cannot be sent between threads safely
- |
- = help: the trait `std::marker::Send` is not implemented for `(dyn Dummy + 'a)`
- = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn Dummy + 'a)>`
- = note: required because it appears within the type `std::boxed::Box<(dyn Dummy + 'a)>`
-note: required by `assert_send`
- --> $DIR/kindck-send-object1.rs:15:1
- |
-LL | fn assert_send<T:Send+'static>() { }
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
+++ /dev/null
-error: borrowed data escapes outside of function
- --> $DIR/lifetime-bound-will-change-warning.rs:44:5
- |
-LL | fn test2<'a>(x: &'a Box<Fn()+'a>) {
- | - `x` is a reference that is only valid in the function body
-LL | // but ref_obj will not, so warn.
-LL | ref_obj(x) //~ ERROR mismatched types
- | ^^^^^^^^^^ `x` escapes the function body here
-
-error: borrowed data escapes outside of function
- --> $DIR/lifetime-bound-will-change-warning.rs:49:5
- |
-LL | fn test2cc<'a>(x: &'a Box<Fn()+'a>) {
- | - `x` is a reference that is only valid in the function body
-LL | // same as test2, but cross crate
-LL | lib::ref_obj(x) //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^ `x` escapes the function body here
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex1-return-one-existing-name-if-else-using-impl.rs:21:20
- |
-LL | fn foo<'a>(x: &i32, y: &'a i32) -> &'a i32 {
- | -- - let's call the lifetime of this reference `'1`
- | |
- | lifetime `'a` defined here
-LL |
-LL | if x > y { x } else { y } //~ ERROR lifetime mismatch
- | ^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'1`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex1-return-one-existing-name-return-type-is-anon.rs:18:5
- |
-LL | fn foo<'a>(&self, x: &'a i32) -> &i32 {
- | -- - let's call the lifetime of this reference `'1`
- | |
- | lifetime `'a` defined here
-LL |
-LL | x //~ ERROR lifetime mismatch
- | ^ function was supposed to return data with lifetime `'1` but it is returning data with lifetime `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex1-return-one-existing-name-self-is-anon.rs:18:30
- |
-LL | fn foo<'a>(&self, x: &'a Foo) -> &'a Foo {
- | -- - let's call the lifetime of this reference `'1`
- | |
- | lifetime `'a` defined here
-LL |
-LL | if true { x } else { self } //~ ERROR lifetime mismatch
- | ^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'1`
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `x`
- --> $DIR/ex2a-push-one-existing-name-2.rs:16:5
- |
-LL | fn foo<'a>(x: Ref<i32>, y: &mut Vec<Ref<'a, i32>>) {
- | -------- help: add explicit lifetime `'a` to the type of `x`: `Ref<'a, i32>`
-LL | y.push(x); //~ ERROR explicit lifetime
- | ^^^^^^^^^ lifetime `'a` required
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `y`
- --> $DIR/ex2a-push-one-existing-name-early-bound.rs:17:5
- |
-LL | fn baz<'a, 'b, T>(x: &mut Vec<&'a T>, y: &T)
- | -- help: add explicit lifetime `'a` to the type of `y`: `&'a T`
-...
-LL | x.push(y); //~ ERROR explicit lifetime required
- | ^^^^^^^^^ lifetime `'a` required
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `y`
- --> $DIR/ex2a-push-one-existing-name.rs:16:5
- |
-LL | fn foo<'a>(x: &mut Vec<Ref<'a, i32>>, y: Ref<i32>) {
- | -------- help: add explicit lifetime `'a` to the type of `y`: `Ref<'a, i32>`
-LL | x.push(y); //~ ERROR explicit lifetime
- | ^^^^^^^^^ lifetime `'a` required
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex2b-push-no-existing-names.rs:16:5
- |
-LL | fn foo(x: &mut Vec<Ref<i32>>, y: Ref<i32>) {
- | - - has type `Ref<'1, i32>`
- | |
- | has type `&mut std::vec::Vec<Ref<'2, i32>>`
-LL | x.push(y); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex2c-push-inference-variable.rs:17:5
- |
-LL | fn foo<'a, 'b, 'c>(x: &'a mut Vec<Ref<'b, i32>>, y: Ref<'c, i32>) {
- | -- -- lifetime `'c` defined here
- | |
- | lifetime `'b` defined here
-LL | let z = Ref { data: y.data };
-LL | x.push(z); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'c` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex2d-push-inference-variable-2.rs:18:5
- |
-LL | fn foo<'a, 'b, 'c>(x: &'a mut Vec<Ref<'b, i32>>, y: Ref<'c, i32>) {
- | -- -- lifetime `'c` defined here
- | |
- | lifetime `'b` defined here
-...
-LL | a.push(b);
- | ^^^^^^^^^ argument requires that `'c` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex2e-push-inference-variable-3.rs:18:5
- |
-LL | fn foo<'a, 'b, 'c>(x: &'a mut Vec<Ref<'b, i32>>, y: Ref<'c, i32>) {
- | -- -- lifetime `'c` defined here
- | |
- | lifetime `'b` defined here
-...
-LL | Vec::push(a, b);
- | ^^^^^^^^^^^^^^^ argument requires that `'c` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-2.rs:12:5
- |
-LL | fn foo(&mut (ref mut v, w): &mut (&u8, &u8), x: &u8) {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-LL | *v = x; //~ ERROR lifetime mismatch
- | ^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-3.rs:12:5
- |
-LL | fn foo(z: &mut Vec<(&u8,&u8)>, (x, y): (&u8, &u8)) {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-LL | z.push((x,y)); //~ ERROR lifetime mismatch
- | ^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-3.rs:12:5
- |
-LL | fn foo(z: &mut Vec<(&u8,&u8)>, (x, y): (&u8, &u8)) {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-LL | z.push((x,y)); //~ ERROR lifetime mismatch
- | ^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-both-are-structs-2.rs:16:5
- |
-LL | fn foo(mut x: Ref, y: Ref) {
- | ----- - has type `Ref<'_, '1>`
- | |
- | has type `Ref<'_, '2>`
-LL | x.b = y.b; //~ ERROR lifetime mismatch
- | ^^^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-both-are-structs-3.rs:16:5
- |
-LL | fn foo(mut x: Ref) {
- | -----
- | |
- | has type `Ref<'_, '1>`
- | has type `Ref<'2, '_>`
-LL | x.a = x.b; //~ ERROR lifetime mismatch
- | ^^^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-both-are-structs-earlybound-regions.rs:18:5
- |
-LL | fn foo<'a, 'b>(mut x: Vec<Ref<'a>>, y: Ref<'b>)
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | x.push(y); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-both-are-structs-latebound-regions.rs:15:5
- |
-LL | fn foo<'a, 'b>(mut x: Vec<Ref<'a>>, y: Ref<'b>) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | x.push(y); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-both-are-structs.rs:15:5
- |
-LL | fn foo(mut x: Vec<Ref>, y: Ref) {
- | ----- - has type `Ref<'1>`
- | |
- | has type `std::vec::Vec<Ref<'2>>`
-LL | x.push(y); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-latebound-regions.rs:12:5
- |
-LL | fn foo<'a,'b>(x: &mut Vec<&'a u8>, y: &'b u8) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | x.push(y); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-one-is-struct-2.rs:14:5
- |
-LL | fn foo(mut x: Ref, y: &u32) {
- | ----- - let's call the lifetime of this reference `'2`
- | |
- | has type `Ref<'_, '1>`
-LL | y = x.b; //~ ERROR lifetime mismatch
- | ^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error[E0384]: cannot assign to immutable argument `y`
- --> $DIR/ex3-both-anon-regions-one-is-struct-2.rs:14:5
- |
-LL | fn foo(mut x: Ref, y: &u32) {
- | - help: make this binding mutable: `mut y`
-LL | y = x.b; //~ ERROR lifetime mismatch
- | ^^^^^^^ cannot assign to immutable argument
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0384`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-one-is-struct-3.rs:14:5
- |
-LL | fn foo(mut y: Ref, x: &u32) {
- | ----- - let's call the lifetime of this reference `'1`
- | |
- | has type `Ref<'_, '2>`
-LL | y.b = x; //~ ERROR lifetime mismatch
- | ^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-one-is-struct-4.rs:14:5
- |
-LL | fn foo(mut y: Ref, x: &u32) {
- | ----- - let's call the lifetime of this reference `'1`
- | |
- | has type `Ref<'_, '2>`
-LL | y.b = x; //~ ERROR lifetime mismatch
- | ^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-one-is-struct.rs:17:5
- |
-LL | fn foo(mut x: Ref, y: &u32) {
- | ----- - let's call the lifetime of this reference `'1`
- | |
- | has type `Ref<'_, '2>`
-LL | x.b = y; //~ ERROR lifetime mismatch
- | ^^^^^^^ assignment requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-return-type-is-anon.rs:17:5
- |
-LL | fn foo<'a>(&self, x: &i32) -> &i32 {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-LL | x //~ ERROR lifetime mismatch
- | ^ function was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-self-is-anon.rs:17:19
- |
-LL | fn foo<'a>(&self, x: &Foo) -> &Foo {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-LL | if true { x } else { self } //~ ERROR lifetime mismatch
- | ^ function was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable
- --> $DIR/ex3-both-anon-regions-using-fn-items.rs:11:3
- |
-LL | fn foo(x:fn(&u8, &u8), y: Vec<&u8>, z: &u8) {
- | - help: consider changing this to be mutable: `mut y`
-LL | y.push(z); //~ ERROR lifetime mismatch
- | ^ cannot borrow as mutable
-
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-using-fn-items.rs:11:3
- |
-LL | fn foo(x:fn(&u8, &u8), y: Vec<&u8>, z: &u8) {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-LL | y.push(z); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0596`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-using-impl-items.rs:15:9
- |
-LL | fn foo(x: &mut Vec<&u8>, y: &u8) {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-LL | x.push(y); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0596]: cannot borrow `y` as mutable, as it is not declared as mutable
- --> $DIR/ex3-both-anon-regions-using-trait-objects.rs:11:3
- |
-LL | fn foo(x:Box<Fn(&u8, &u8)> , y: Vec<&u8>, z: &u8) {
- | - help: consider changing this to be mutable: `mut y`
-LL | y.push(z); //~ ERROR lifetime mismatch
- | ^ cannot borrow as mutable
-
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions-using-trait-objects.rs:11:3
- |
-LL | fn foo(x:Box<Fn(&u8, &u8)> , y: Vec<&u8>, z: &u8) {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-LL | y.push(z); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0596`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/ex3-both-anon-regions.rs:12:5
- |
-LL | fn foo(x: &mut Vec<&u8>, y: &u8) {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-LL | x.push(y); //~ ERROR lifetime mismatch
- | ^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/lub-if.rs:38:9
- |
-LL | pub fn opt_str2<'a>(maybestr: &'a Option<String>) -> &'static str {
- | -- lifetime `'a` defined here
-...
-LL | s //~ ERROR E0312
- | ^ returning this value requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/lub-if.rs:45:9
- |
-LL | pub fn opt_str3<'a>(maybestr: &'a Option<String>) -> &'static str {
- | -- lifetime `'a` defined here
-...
-LL | s //~ ERROR E0312
- | ^ returning this value requires that `'a` must outlive `'static`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/lub-match.rs:40:13
- |
-LL | pub fn opt_str2<'a>(maybestr: &'a Option<String>) -> &'static str {
- | -- lifetime `'a` defined here
-...
-LL | s //~ ERROR E0312
- | ^ returning this value requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/lub-match.rs:49:13
- |
-LL | pub fn opt_str3<'a>(maybestr: &'a Option<String>) -> &'static str {
- | -- lifetime `'a` defined here
-...
-LL | s //~ ERROR E0312
- | ^ returning this value requires that `'a` must outlive `'static`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/match-ref-mut-invariance.rs:20:9
- |
-LL | impl<'b> S<'b> {
- | -- lifetime `'b` defined here
-LL | fn bar<'a>(&'a mut self) -> &'a mut &'a i32 {
- | -- lifetime `'a` defined here
-LL | match self.0 { ref mut x => x } //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/match-ref-mut-let-invariance.rs:21:9
- |
-LL | impl<'b> S<'b> {
- | -- lifetime `'b` defined here
-LL | fn bar<'a>(&'a mut self) -> &'a mut &'a i32 {
- | -- lifetime `'a` defined here
-LL | let ref mut x = self.0;
-LL | x //~ ERROR mismatched types
- | ^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
LL | box E::Bar(x) => println!("{}", x.to_string()),
| ^
-error: aborting due to previous error
+error[E0507]: cannot move out of `hellothere.x.0` which is behind a `&` reference
+ --> $DIR/moves-based-on-type-block-bad.rs:37:28
+ |
+LL | f(&s, |hellothere| {
+ | ---------- help: consider changing this to be a mutable reference: `&mut S`
+...
+LL | box E::Bar(x) => println!("{}", x.to_string()),
+ | ^
+ | |
+ | cannot move out of `hellothere.x.0` which is behind a `&` reference
+ | `hellothere` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
LL | let _f = to_fn(|| test(i)); //~ ERROR cannot move out
| ^ cannot move out of captured variable in an `Fn` closure
-error: aborting due to previous error
+error[E0507]: cannot move out of `i`, as it is a captured variable in a `Fn` closure
+ --> $DIR/moves-based-on-type-move-out-of-closure-env-issue-1965.rs:21:28
+ |
+LL | let _f = to_fn(|| test(i)); //~ ERROR cannot move out
+ | ^
+ | |
+ | cannot move out of `i`, as it is a captured variable in a `Fn` closure
+ | cannot move
+ |
+help: consider changing this to accept closures that implement `FnMut`
+ --> $DIR/moves-based-on-type-move-out-of-closure-env-issue-1965.rs:21:20
+ |
+LL | let _f = to_fn(|| test(i)); //~ ERROR cannot move out
+ | ^^^^^^^^^^
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0507`.
| cannot move out of borrowed content
| help: consider removing the `*`: `r`
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+ --> $DIR/cannot-move-block-spans.rs:15:15
+ |
+LL | pub fn deref(r: &String) {
+ | ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL | let x = { *r }; //~ ERROR
+ | ^^
+ | |
+ | cannot move out of `*r` which is behind a `&` reference
+ | `r` is a `&` reference, so the data it refers to cannot be moved
+
error[E0507]: cannot move out of borrowed content
--> $DIR/cannot-move-block-spans.rs:16:22
|
| cannot move out of borrowed content
| help: consider removing the `*`: `r`
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+ --> $DIR/cannot-move-block-spans.rs:16:22
+ |
+LL | pub fn deref(r: &String) {
+ | ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL | let x = { *r }; //~ ERROR
+LL | let y = unsafe { *r }; //~ ERROR
+ | ^^
+ | |
+ | cannot move out of `*r` which is behind a `&` reference
+ | `r` is a `&` reference, so the data it refers to cannot be moved
+
error[E0507]: cannot move out of borrowed content
--> $DIR/cannot-move-block-spans.rs:17:26
|
| cannot move out of borrowed content
| help: consider removing the `*`: `r`
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+ --> $DIR/cannot-move-block-spans.rs:17:26
+ |
+LL | pub fn deref(r: &String) {
+ | ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+...
+LL | let z = loop { break *r; }; //~ ERROR
+ | ^^
+ | |
+ | cannot move out of `*r` which is behind a `&` reference
+ | `r` is a `&` reference, so the data it refers to cannot be moved
+
error[E0508]: cannot move out of type `[std::string::String; 2]`, a non-copy array
--> $DIR/cannot-move-block-spans.rs:21:15
|
| cannot move out of borrowed content
| help: consider removing the `*`: `r`
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+ --> $DIR/cannot-move-block-spans.rs:27:38
+ |
+LL | pub fn additional_statement_cases(r: &String) {
+ | ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL | let x = { let mut u = 0; u += 1; *r }; //~ ERROR
+ | ^^
+ | |
+ | cannot move out of `*r` which is behind a `&` reference
+ | `r` is a `&` reference, so the data it refers to cannot be moved
+
error[E0507]: cannot move out of borrowed content
--> $DIR/cannot-move-block-spans.rs:28:45
|
| cannot move out of borrowed content
| help: consider removing the `*`: `r`
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+ --> $DIR/cannot-move-block-spans.rs:28:45
+ |
+LL | pub fn additional_statement_cases(r: &String) {
+ | ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL | let x = { let mut u = 0; u += 1; *r }; //~ ERROR
+LL | let y = unsafe { let mut u = 0; u += 1; *r }; //~ ERROR
+ | ^^
+ | |
+ | cannot move out of `*r` which is behind a `&` reference
+ | `r` is a `&` reference, so the data it refers to cannot be moved
+
error[E0507]: cannot move out of borrowed content
--> $DIR/cannot-move-block-spans.rs:29:49
|
| cannot move out of borrowed content
| help: consider removing the `*`: `r`
-error: aborting due to 9 previous errors
+error[E0507]: cannot move out of `*r` which is behind a `&` reference
+ --> $DIR/cannot-move-block-spans.rs:29:49
+ |
+LL | pub fn additional_statement_cases(r: &String) {
+ | ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+...
+LL | let z = loop { let mut u = 0; u += 1; break *r; u += 2; }; //~ ERROR
+ | ^^
+ | |
+ | cannot move out of `*r` which is behind a `&` reference
+ | `r` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 15 previous errors
Some errors occurred: E0507, E0508.
For more information about an error, try `rustc --explain E0507`.
-error[E0507]: cannot move out of borrowed content
+warning[E0507]: cannot move out of borrowed content
--> $DIR/match-guards-always-borrow.rs:23:13
|
LL | (|| { let bar = foo; bar.take() })();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot move out of borrowed content
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
+
+warning[E0507]: cannot move out of `foo`, as it is immutable for the pattern guard
+ --> $DIR/match-guards-always-borrow.rs:23:13
+ |
+LL | (|| { let bar = foo; bar.take() })();
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ | |
+ | cannot move out of `foo`, as it is immutable for the pattern guard
+ | cannot move
+ |
+ = note: variables bound in patterns are immutable until the end of the pattern guard
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
+
+error: compilation successful
+ --> $DIR/match-guards-always-borrow.rs:57:1
+ |
+LL | / fn main() { //[ast]~ ERROR compilation successful
+LL | | should_reject_destructive_mutate_in_guard();
+LL | | allow_mutate_in_arm_body();
+LL | | allow_move_into_arm_body();
+LL | | }
+ | |_^
error: aborting due to previous error
+++ /dev/null
-error[E0309]: the associated type `<T as MyTrait<'_>>::Output` may not live long enough
- --> $DIR/projection-where-clause-env-wrong-lifetime.rs:14:5
- |
-LL | bar::<<T as MyTrait<'a>>::Output>()
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `<T as MyTrait<'_>>::Output: 'a`...
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0309`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/object-lifetime-default-elision.rs:81:5
- |
-LL | fn load3<'a,'b>(ss: &'a SomeTrait) -> &'b SomeTrait {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | ss
- | ^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `ss`
- --> $DIR/object-lifetime-default-from-box-error.rs:28:5
- |
-LL | fn load(ss: &mut SomeStruct) -> Box<SomeTrait> {
- | --------------- help: add explicit lifetime `'static` to the type of `ss`: `&mut SomeStruct<'static>`
-...
-LL | ss.r //~ ERROR explicit lifetime required in the type of `ss` [E0621]
- | ^^^^ lifetime `'static` required
-
-error[E0507]: cannot move out of borrowed content
- --> $DIR/object-lifetime-default-from-box-error.rs:28:5
- |
-LL | ss.r //~ ERROR explicit lifetime required in the type of `ss` [E0621]
- | ^^^^ cannot move out of borrowed content
-
-error[E0621]: explicit lifetime required in the type of `ss`
- --> $DIR/object-lifetime-default-from-box-error.rs:41:5
- |
-LL | fn store1<'b>(ss: &mut SomeStruct, b: Box<SomeTrait+'b>) {
- | --------------- help: add explicit lifetime `'b` to the type of `ss`: `&mut SomeStruct<'b>`
-...
-LL | ss.r = b; //~ ERROR 41:12: 41:13: explicit lifetime required in the type of `ss` [E0621]
- | ^^^^ lifetime `'b` required
-
-error: aborting due to 3 previous errors
-
-Some errors occurred: E0507, E0621.
-For more information about an error, try `rustc --explain E0507`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/object-lifetime-default-from-rptr-box-error.rs:25:5
- |
-LL | fn c<'a>(t: &'a Box<Test+'a>, mut ss: SomeStruct<'a>) {
- | -- lifetime `'a` defined here
-LL | ss.t = t; //~ ERROR mismatched types
- | ^^^^^^^^ assignment requires that `'a` must outlive `'static`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/object-lifetime-default-from-rptr-struct-error.rs:31:5
- |
-LL | fn c<'a>(t: &'a MyBox<Test+'a>, mut ss: SomeStruct<'a>) {
- | -- lifetime `'a` defined here
-LL | ss.t = t; //~ ERROR mismatched types
- | ^^^^^^^^ assignment requires that `'a` must outlive `'static`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/object-lifetime-default-mybox.rs:37:5
- |
-LL | fn load1<'a,'b>(a: &'a MyBox<SomeTrait>,
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | a //~ ERROR lifetime mismatch
- | ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: borrowed data escapes outside of function
- --> $DIR/object-lifetime-default-mybox.rs:41:5
- |
-LL | fn load2<'a>(ss: &MyBox<SomeTrait+'a>) -> MyBox<SomeTrait+'a> {
- | -- `ss` is a reference that is only valid in the function body
-LL | load0(ss) //~ ERROR mismatched types
- | ^^^^^^^^^ `ss` escapes the function body here
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: borrowed data escapes outside of function
- --> $DIR/region-invariant-static-error-reporting.rs:25:9
- |
-LL | fn unify<'a>(x: Option<Invariant<'a>>, f: fn(Invariant<'a>)) {
- | - `x` is a reference that is only valid in the function body
-LL | let bad = if x.is_some() {
-LL | x.unwrap()
- | ^^^^^^^^^^ `x` escapes the function body here
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0308]: mismatched types
- --> $DIR/region-lifetime-bounds-on-fns-where-clause.rs:30:43
- |
-LL | let _: fn(&mut &isize, &mut &isize) = a; //~ ERROR mismatched types
- | ^ expected concrete lifetime, found bound lifetime parameter
- |
- = note: expected type `for<'r, 's, 't0, 't1> fn(&'r mut &'s isize, &'t0 mut &'t1 isize)`
- found type `for<'r, 's> fn(&'r mut &isize, &'s mut &isize) {a::<'_, '_>}`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
+++ /dev/null
-error[E0308]: mismatched types
- --> $DIR/region-multiple-lifetime-bounds-on-fns-where-clause.rs:32:56
- |
-LL | let _: fn(&mut &isize, &mut &isize, &mut &isize) = a; //~ ERROR mismatched types
- | ^ expected concrete lifetime, found bound lifetime parameter
- |
- = note: expected type `for<'r, 's, 't0, 't1, 't2, 't3> fn(&'r mut &'s isize, &'t0 mut &'t1 isize, &'t2 mut &'t3 isize)`
- found type `for<'r, 's, 't0> fn(&'r mut &isize, &'s mut &isize, &'t0 mut &isize) {a::<'_, '_, '_>}`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/region-object-lifetime-2.rs:20:5
- |
-LL | fn borrowed_receiver_different_lifetimes<'a,'b>(x: &'a Foo) -> &'b () {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | x.borrowed() //~ ERROR cannot infer
- | ^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/region-object-lifetime-4.rs:22:5
- |
-LL | fn borrowed_receiver_related_lifetimes2<'a,'b>(x: &'a (Foo+'b)) -> &'b () {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | x.borrowed() //~ ERROR cannot infer
- | ^^^^^^^^^^^^ argument requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `v`
- --> $DIR/region-object-lifetime-in-coercion.rs:18:12
- |
-LL | fn a(v: &[u8]) -> Box<Foo + 'static> {
- | ----- help: add explicit lifetime `'static` to the type of `v`: `&'static [u8]`
-LL | let x: Box<Foo + 'static> = Box::new(v);
- | ^^^^^^^^^^^^^^^^^^ lifetime `'static` required
-
-error[E0621]: explicit lifetime required in the type of `v`
- --> $DIR/region-object-lifetime-in-coercion.rs:24:5
- |
-LL | fn b(v: &[u8]) -> Box<Foo + 'static> {
- | ----- help: add explicit lifetime `'static` to the type of `v`: `&'static [u8]`
-LL | Box::new(v)
- | ^^^^^^^^^^^ lifetime `'static` required
-
-error[E0621]: explicit lifetime required in the type of `v`
- --> $DIR/region-object-lifetime-in-coercion.rs:31:5
- |
-LL | fn c(v: &[u8]) -> Box<Foo> {
- | ----- help: add explicit lifetime `'static` to the type of `v`: `&'static [u8]`
-...
-LL | Box::new(v)
- | ^^^^^^^^^^^ lifetime `'static` required
-
-error: unsatisfied lifetime constraints
- --> $DIR/region-object-lifetime-in-coercion.rs:36:5
- |
-LL | fn d<'a,'b>(v: &'a [u8]) -> Box<Foo+'b> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | Box::new(v)
- | ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-addr-of-self.rs:17:16
- |
-LL | pub fn chase_cat(&mut self) {
- | - let's call the lifetime of this reference `'1`
-LL | let p: &'static mut usize = &mut self.cats_chased; //~ ERROR cannot infer
- | ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'static`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-addr-of-upvar-self.rs:20:20
- |
-LL | let _f = || {
- | -- lifetime `'1` represents this closure's body
-LL | let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer
- | ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'static`
- |
- = note: closure implements `FnMut`, so references to captured variables can't escape the closure
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-addr-of-upvar-self.rs:20:20
- |
-LL | pub fn chase_cat(&mut self) {
- | --------- lifetime `'2` appears in the type of `self`
-LL | let _f = || {
- | -- lifetime `'1` represents this closure's body
-LL | let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer
- | ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'2`
- |
- = note: closure implements `FnMut`, so references to captured variables can't escape the closure
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-addr-of-upvar-self.rs:20:20
- |
-LL | pub fn chase_cat(&mut self) {
- | - let's call the lifetime of this reference `'1`
-LL | let _f = || {
-LL | let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer
- | ^^^^^^^^^^^^^^^^^^ type annotation requires that `'1` must outlive `'static`
-
-error[E0597]: `self` does not live long enough
- --> $DIR/regions-addr-of-upvar-self.rs:20:46
- |
-LL | let _f = || {
- | -- value captured here
-LL | let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer
- | ^^^^ borrowed value does not live long enough
-...
-LL | }
- | - `self` dropped here while still borrowed
- |
- = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0597`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-assoc-type-in-supertrait-outlives-container.rs:52:13
- |
-LL | fn with_assoc<'a,'b>() {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let _x: &'a WithAssoc<TheType<'b>> = loop { };
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounded-by-trait-requiring-static.rs:32:5
- |
-LL | fn param_not_ok<'a>(x: &'a isize) {
- | -- lifetime `'a` defined here
-LL | assert_send::<&'a isize>(); //~ ERROR does not fulfill the required lifetime
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounded-by-trait-requiring-static.rs:36:5
- |
-LL | fn param_not_ok1<'a>(_: &'a isize) {
- | -- lifetime `'a` defined here
-LL | assert_send::<&'a str>(); //~ ERROR does not fulfill the required lifetime
- | ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounded-by-trait-requiring-static.rs:40:5
- |
-LL | fn param_not_ok2<'a>(_: &'a isize) {
- | -- lifetime `'a` defined here
-LL | assert_send::<&'a [isize]>(); //~ ERROR does not fulfill the required lifetime
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounded-by-trait-requiring-static.rs:54:5
- |
-LL | fn box_with_region_not_ok<'a>() {
- | -- lifetime `'a` defined here
-LL | assert_send::<Box<&'a isize>>(); //~ ERROR does not fulfill the required lifetime
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounded-by-trait-requiring-static.rs:65:5
- |
-LL | fn unsafe_ok2<'a>(_: &'a isize) {
- | -- lifetime `'a` defined here
-LL | assert_send::<*const &'a isize>(); //~ ERROR does not fulfill the required lifetime
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounded-by-trait-requiring-static.rs:69:5
- |
-LL | fn unsafe_ok3<'a>(_: &'a isize) {
- | -- lifetime `'a` defined here
-LL | assert_send::<*mut &'a isize>(); //~ ERROR does not fulfill the required lifetime
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: aborting due to 6 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounded-method-type-parameters-cross-crate.rs:30:5
- |
-LL | fn call_bigger_region<'x, 'y>(a: Inv<'x>, b: Inv<'y>) {
- | -- -- lifetime `'y` defined here
- | |
- | lifetime `'x` defined here
-LL | // Here the value provided for 'y is 'y, and hence 'y:'x does not hold.
-LL | a.bigger_region(b) //~ ERROR 30:7: 30:20: lifetime mismatch [E0623]
- | ^^^^^^^^^^^^^^^^^^ argument requires that `'y` must outlive `'x`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: borrowed data escapes outside of function
- --> $DIR/regions-bounded-method-type-parameters-trait-bound.rs:30:5
- |
-LL | fn caller2<'a,'b,F:Foo<'a>>(a: Inv<'a>, b: Inv<'b>, f: F) {
- | - - `b` is a reference that is only valid in the function body
- | |
- | `a` is declared here, outside of the function body
-LL | // Here the value provided for 'y is 'b, and hence 'b:'a does not hold.
-LL | f.method(b); //~ ERROR 30:7: 30:13: lifetime mismatch [E0623]
- | ^^^^^^^^^^^ `b` escapes the function body here
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `x`
- --> $DIR/regions-bounded-method-type-parameters.rs:22:5
- |
-LL | fn caller<'a>(x: &isize) {
- | ------ help: add explicit lifetime `'a` to the type of `x`: `&'a isize`
-LL | Foo.some_method::<&'a isize>();
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lifetime `'a` required
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounded-method-type-parameters.rs:22:5
- |
-LL | fn caller<'a>(x: &isize) {
- | -- lifetime `'a` defined here
-LL | Foo.some_method::<&'a isize>();
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'a` must outlive `'static`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounds.rs:19:12
- |
-LL | fn a_fn1<'a,'b>(e: an_enum<'a>) -> an_enum<'b> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | return e; //~ ERROR mismatched types
- | ^ returning this value requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-bounds.rs:23:12
- |
-LL | fn a_fn3<'a,'b>(e: a_class<'a>) -> a_class<'b> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | return e; //~ ERROR mismatched types
- | ^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error[E0310]: the associated type `<T as Iter>::Item` may not live long enough
- --> $DIR/regions-close-associated-type-into-object.rs:25:5
- |
-LL | Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
- | ^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'static`...
-
-error[E0310]: the associated type `<T as Iter>::Item` may not live long enough
- --> $DIR/regions-close-associated-type-into-object.rs:32:5
- |
-LL | Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
- | ^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'static`...
-
-error[E0309]: the associated type `<T as Iter>::Item` may not live long enough
- --> $DIR/regions-close-associated-type-into-object.rs:38:5
- |
-LL | Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
- | ^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'a`...
-
-error[E0309]: the associated type `<T as Iter>::Item` may not live long enough
- --> $DIR/regions-close-associated-type-into-object.rs:45:5
- |
-LL | Box::new(item) //~ ERROR associated type `<T as Iter>::Item` may not live long enough
- | ^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `<T as Iter>::Item: 'a`...
-
-error: aborting due to 4 previous errors
-
-Some errors occurred: E0309, E0310.
-For more information about an error, try `rustc --explain E0309`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-close-object-into-object-2.rs:20:5
- |
-LL | fn g<'a, T: 'static>(v: Box<A<T>+'a>) -> Box<X+'static> {
- | -- lifetime `'a` defined here
-LL | box B(&*v) as Box<X> //~ ERROR cannot infer
- | ^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-
-error[E0597]: `*v` does not live long enough
- --> $DIR/regions-close-object-into-object-2.rs:20:11
- |
-LL | box B(&*v) as Box<X> //~ ERROR cannot infer
- | ^^^ borrowed value does not live long enough
-LL | }
- | - `*v` dropped here while still borrowed
- |
- = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0597`.
+++ /dev/null
-error[E0310]: the parameter type `U` may not live long enough
- --> $DIR/regions-close-object-into-object-4.rs:20:5
- |
-LL | box B(&*v) as Box<X> //~ ERROR cannot infer
- | ^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `U: 'static`...
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-close-object-into-object-4.rs:20:5
- |
-LL | fn i<'a, T, U>(v: Box<A<U>+'a>) -> Box<X+'static> {
- | -- lifetime `'a` defined here
-LL | box B(&*v) as Box<X> //~ ERROR cannot infer
- | ^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
-
-error[E0310]: the parameter type `U` may not live long enough
- --> $DIR/regions-close-object-into-object-4.rs:20:9
- |
-LL | box B(&*v) as Box<X> //~ ERROR cannot infer
- | ^^^^^^
- |
- = help: consider adding an explicit lifetime bound `U: 'static`...
-
-error[E0597]: `*v` does not live long enough
- --> $DIR/regions-close-object-into-object-4.rs:20:11
- |
-LL | box B(&*v) as Box<X> //~ ERROR cannot infer
- | ^^^ borrowed value does not live long enough
-LL | }
- | - `*v` dropped here while still borrowed
- |
- = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 4 previous errors
-
-Some errors occurred: E0310, E0597.
-For more information about an error, try `rustc --explain E0310`.
+++ /dev/null
-error[E0310]: the parameter type `T` may not live long enough
- --> $DIR/regions-close-object-into-object-5.rs:27:5
- |
-LL | box B(&*v) as Box<X>
- | ^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error[E0310]: the parameter type `T` may not live long enough
- --> $DIR/regions-close-object-into-object-5.rs:27:9
- |
-LL | box B(&*v) as Box<X>
- | ^^^^^^
- |
- = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error[E0597]: `*v` does not live long enough
- --> $DIR/regions-close-object-into-object-5.rs:27:11
- |
-LL | box B(&*v) as Box<X>
- | ^^^ borrowed value does not live long enough
-...
-LL | }
- | - `*v` dropped here while still borrowed
- |
- = note: borrowed value must be valid for the static lifetime...
-
-error: aborting due to 3 previous errors
-
-Some errors occurred: E0310, E0597.
-For more information about an error, try `rustc --explain E0310`.
+++ /dev/null
-error[E0310]: the parameter type `A` may not live long enough
- --> $DIR/regions-close-over-type-parameter-1.rs:20:5
- |
-LL | box v as Box<SomeTrait+'static>
- | ^^^^^
- |
- = help: consider adding an explicit lifetime bound `A: 'static`...
-
-error[E0309]: the parameter type `A` may not live long enough
- --> $DIR/regions-close-over-type-parameter-1.rs:30:5
- |
-LL | box v as Box<SomeTrait+'b>
- | ^^^^^
- |
- = help: consider adding an explicit lifetime bound `A: 'b`...
-
-error: aborting due to 2 previous errors
-
-Some errors occurred: E0309, E0310.
-For more information about an error, try `rustc --explain E0309`.
+++ /dev/null
-error[E0309]: the parameter type `A` may not live long enough
- --> $DIR/regions-close-over-type-parameter-multiple.rs:30:5
- |
-LL | box v as Box<SomeTrait+'a> //~ ERROR cannot infer an appropriate lifetime
- | ^^^^^
- |
- = help: consider adding an explicit lifetime bound `A: 'c`...
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0309`.
+++ /dev/null
-error[E0310]: the parameter type `T` may not live long enough
- --> $DIR/regions-close-param-into-object.rs:16:5
- |
-LL | Box::new(v) //~ ERROR parameter type `T` may not live long enough
- | ^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error[E0310]: the parameter type `T` may not live long enough
- --> $DIR/regions-close-param-into-object.rs:22:5
- |
-LL | Box::new(v) //~ ERROR parameter type `T` may not live long enough
- | ^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `T: 'static`...
-
-error[E0309]: the parameter type `T` may not live long enough
- --> $DIR/regions-close-param-into-object.rs:28:5
- |
-LL | Box::new(v) //~ ERROR parameter type `T` may not live long enough
- | ^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `T: 'a`...
-
-error[E0309]: the parameter type `T` may not live long enough
- --> $DIR/regions-close-param-into-object.rs:34:5
- |
-LL | Box::new(v) //~ ERROR parameter type `T` may not live long enough
- | ^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `T: 'a`...
-
-error: aborting due to 4 previous errors
-
-Some errors occurred: E0309, E0310.
-For more information about an error, try `rustc --explain E0309`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-creating-enums3.rs:17:5
- |
-LL | fn mk_add_bad1<'a,'b>(x: &'a ast<'a>, y: &'b ast<'b>) -> ast<'a> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | ast::add(x, y) //~ ERROR 17:5: 17:19: lifetime mismatch [E0623]
- | ^^^^^^^^^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-creating-enums4.rs:17:5
- |
-LL | fn mk_add_bad2<'a,'b>(x: &'a ast<'a>, y: &'a ast<'a>, z: &ast) -> ast<'b> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | ast::add(x, y) //~ ERROR cannot infer
- | ^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-early-bound-error-method.rs:30:9
- |
-LL | impl<'a> Box<'a> {
- | -- lifetime `'a` defined here
-LL | fn or<'b,G:GetRef<'b>>(&self, g2: G) -> &'a isize {
- | -- lifetime `'b` defined here
-LL | g2.get()
- | ^^^^^^^^ returning this value requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-early-bound-error.rs:29:5
- |
-LL | fn get<'a,'b,G:GetRef<'a, isize>>(g1: G, b: &'b isize) -> &'b isize {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | g1.get()
- | ^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-escape-method.rs:25:13
- |
-LL | s.f(|p| p) //~ ERROR cannot infer
- | -- ^ returning this value requires that `'1` must outlive `'2`
- | ||
- | |return type of closure is &'2 i32
- | has type `&'1 i32`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-escape-via-trait-or-not.rs:28:14
- |
-LL | with(|o| o) //~ ERROR cannot infer
- | -- ^ returning this value requires that `'1` must outlive `'2`
- | ||
- | |return type of closure is &'2 isize
- | has type `&'1 isize`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-free-region-ordering-callee.rs:23:5
- |
-LL | fn ordering2<'a, 'b>(x: &'a &'b usize, y: &'a usize) -> &'b usize {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | // However, it is not safe to assume that 'b <= 'a
-LL | &*y //~ ERROR 23:5: 23:8: lifetime mismatch [E0623]
- | ^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-free-region-ordering-callee.rs:28:24
- |
-LL | fn ordering3<'a, 'b>(x: &'a usize, y: &'b usize) -> &'a &'b usize {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | // Do not infer an ordering from the return value.
-LL | let z: &'b usize = &*x;
- | ^^^ assignment requires that `'a` must outlive `'b`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-free-region-ordering-caller.rs:18:12
- |
-LL | fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | let z: Option<&'b &'a usize> = None;//~ ERROR E0623
- | ^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-free-region-ordering-caller.rs:23:12
- |
-LL | fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | let y: Paramd<'a> = Paramd { x: a };
-LL | let z: Option<&'b Paramd<'a>> = None;//~ ERROR E0623
- | ^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-free-region-ordering-caller.rs:27:12
- |
-LL | fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | let z: Option<&'a &'b usize> = None;//~ ERROR E0623
- | ^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: aborting due to 3 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-free-region-ordering-incorrect.rs:25:5
- |
-LL | impl<'b, T> Node<'b, T> {
- | -- lifetime `'b` defined here
-LL | fn get<'a>(&'a self) -> &'b T {
- | -- lifetime `'a` defined here
-LL | / match self.next {
-LL | | Some(ref next) => next.get(),
-LL | | None => &self.val //~ ERROR cannot infer
-LL | | }
- | |_____^ returning this value requires that `'a` must outlive `'b`
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0309]: the parameter type `T` may not live long enough
- --> $DIR/regions-implied-bounds-projection-gap-1.rs:26:5
- |
-LL | wf::<&'x T>();
- | ^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `T: 'x`...
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0309`.
+++ /dev/null
-error[E0309]: the parameter type `Self` may not live long enough
- --> $DIR/regions-infer-bound-from-trait-self.rs:56:9
- |
-LL | check_bound(x, self)
- | ^^^^^^^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `Self: 'a`...
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0309`.
+++ /dev/null
-error[E0309]: the parameter type `A` may not live long enough
- --> $DIR/regions-infer-bound-from-trait.rs:43:5
- |
-LL | check_bound(x, a) //~ ERROR parameter type `A` may not live long enough
- | ^^^^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `A: 'a`...
-
-error[E0309]: the parameter type `A` may not live long enough
- --> $DIR/regions-infer-bound-from-trait.rs:47:5
- |
-LL | check_bound(x, a) //~ ERROR parameter type `A` may not live long enough
- | ^^^^^^^^^^^^^^^^^
- |
- = help: consider adding an explicit lifetime bound `A: 'a`...
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0309`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-call-3.rs:18:24
- |
-LL | let z = with(|y| { select(x, y) });
- | -- ^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'2`
- | ||
- | |return type of closure is &'2 isize
- | has type `&'1 isize`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-contravariance-due-to-decl.rs:35:12
- |
-LL | fn use_<'short,'long>(c: Contravariant<'short>,
- | ------ ----- lifetime `'long` defined here
- | |
- | lifetime `'short` defined here
-...
-LL | let _: Contravariant<'long> = c; //~ ERROR E0623
- | ^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-covariance-due-to-decl.rs:32:12
- |
-LL | fn use_<'short,'long>(c: Covariant<'long>,
- | ------ ----- lifetime `'long` defined here
- | |
- | lifetime `'short` defined here
-...
-LL | let _: Covariant<'short> = c; //~ ERROR E0623
- | ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-invariance-due-to-decl.rs:22:5
- |
-LL | fn to_longer_lifetime<'r>(b_isize: invariant<'r>) -> invariant<'static> {
- | -- lifetime `'r` defined here
-LL | b_isize //~ ERROR mismatched types
- | ^^^^^^^ returning this value requires that `'r` must outlive `'static`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-invariance-due-to-mutability-3.rs:21:5
- |
-LL | fn to_longer_lifetime<'r>(b_isize: invariant<'r>) -> invariant<'static> {
- | -- lifetime `'r` defined here
-LL | b_isize //~ ERROR mismatched types
- | ^^^^^^^ returning this value requires that `'r` must outlive `'static`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-invariance-due-to-mutability-4.rs:21:5
- |
-LL | fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
- | -- lifetime `'r` defined here
-LL | b_isize //~ ERROR mismatched types
- | ^^^^^^^ returning this value requires that `'r` must outlive `'static`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-not-param.rs:25:54
- |
-LL | fn take_direct<'a,'b>(p: direct<'a>) -> direct<'b> { p } //~ ERROR mismatched types
- | -- -- lifetime `'b` defined here ^ returning this value requires that `'a` must outlive `'b`
- | |
- | lifetime `'a` defined here
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-not-param.rs:29:63
- |
-LL | fn take_indirect2<'a,'b>(p: indirect2<'a>) -> indirect2<'b> { p } //~ ERROR mismatched types
- | -- -- lifetime `'b` defined here ^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
- | |
- | lifetime `'a` defined here
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-not-param.rs:29:63
- |
-LL | fn take_indirect2<'a,'b>(p: indirect2<'a>) -> indirect2<'b> { p } //~ ERROR mismatched types
- | -- -- lifetime `'b` defined here ^ returning this value requires that `'a` must outlive `'b`
- | |
- | lifetime `'a` defined here
-
-error: aborting due to 3 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-infer-paramd-indirect.rs:33:9
- |
-LL | impl<'a> set_f<'a> for c<'a> {
- | -- lifetime `'a` defined here
-...
-LL | fn set_f_bad(&mut self, b: Box<b>) {
- | - has type `std::boxed::Box<std::boxed::Box<&'1 isize>>`
-LL | self.f = b;
- | ^^^^^^ assignment requires that `'1` must outlive `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error[E0308]: mismatched types
- --> $DIR/regions-lifetime-bounds-on-fns.rs:30:43
- |
-LL | let _: fn(&mut &isize, &mut &isize) = a; //~ ERROR mismatched types
- | ^ expected concrete lifetime, found bound lifetime parameter
- |
- = note: expected type `for<'r, 's, 't0, 't1> fn(&'r mut &'s isize, &'t0 mut &'t1 isize)`
- found type `for<'r, 's> fn(&'r mut &isize, &'s mut &isize) {a::<'_, '_>}`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0308`.
+++ /dev/null
-error: borrowed data escapes outside of closure
- --> $DIR/regions-nested-fns.rs:20:9
- |
-LL | let mut ay = &y; //~ ERROR E0495
- | ------ `ay` is declared here, outside of the closure body
-LL |
-LL | ignore::<Box<for<'z> FnMut(&'z isize)>>(Box::new(|z| {
- | - `z` is a reference that is only valid in the closure body
-...
-LL | ay = z;
- | ^^^^^^ `z` escapes the closure body here
-
-error[E0597]: `y` does not live long enough
- --> $DIR/regions-nested-fns.rs:15:18
- |
-LL | let mut ay = &y; //~ ERROR E0495
- | ^^ borrowed value does not live long enough
-...
-LL | }
- | - `y` dropped here while still borrowed
- |
- = note: borrowed value must be valid for the static lifetime...
-
-error[E0597]: `y` does not live long enough
- --> $DIR/regions-nested-fns.rs:19:15
- |
-LL | ignore::<Box<for<'z> FnMut(&'z isize)>>(Box::new(|z| {
- | --- value captured here
-LL | ay = x;
-LL | ay = &y;
- | ^ borrowed value does not live long enough
-...
-LL | }
- | - `y` dropped here while still borrowed
- |
- = note: borrowed value must be valid for the static lifetime...
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-nested-fns.rs:24:27
- |
-LL | fn nested<'x>(x: &'x isize) {
- | -- lifetime `'x` defined here
-...
-LL | if false { return x; } //~ ERROR E0312
- | ^ returning this value requires that `'x` must outlive `'static`
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0597`.
+++ /dev/null
-error: compilation successful
- --> $DIR/regions-outlives-projection-container-hrtb.rs:68:1
- |
-LL | / fn main() {
-LL | | }
- | |_^
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-outlives-projection-container-wc.rs:46:13
- |
-LL | fn with_assoc<'a,'b>() {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let _x: &'a WithAssoc<TheType<'b>> = loop { };
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-outlives-projection-container.rs:50:13
- |
-LL | fn with_assoc<'a,'b>() {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let _x: &'a WithAssoc<TheType<'b>> = loop { };
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-outlives-projection-container.rs:68:13
- |
-LL | fn without_assoc<'a,'b>() {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let _x: &'a WithoutAssoc<TheType<'b>> = loop { };
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-outlives-projection-container.rs:77:5
- |
-LL | fn call_with_assoc<'a,'b>() {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | call::<&'a WithAssoc<TheType<'b>>>();
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-outlives-projection-container.rs:84:5
- |
-LL | fn call_without_assoc<'a,'b>() {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | call::<&'a WithoutAssoc<TheType<'b>>>(); //~ ERROR reference has a longer lifetime
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-
-error: aborting due to 4 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-reborrow-from-shorter-mut-ref-mut-ref.rs:14:5
- |
-LL | fn copy_borrowed_ptr<'a, 'b, 'c>(p: &'a mut &'b mut &'c mut isize) -> &'b mut isize {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | &mut ***p //~ ERROR 14:5: 14:14: lifetime mismatch [E0623]
- | ^^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-reborrow-from-shorter-mut-ref.rs:16:5
- |
-LL | fn copy_borrowed_ptr<'a, 'b>(p: &'a mut &'b mut isize) -> &'b mut isize {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | &mut **p //~ ERROR 16:5: 16:13: lifetime mismatch [E0623]
- | ^^^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-ret-borrowed-1.rs:20:14
- |
-LL | with(|o| o)
- | -- ^ returning this value requires that `'1` must outlive `'2`
- | ||
- | |return type of closure is &'2 isize
- | has type `&'1 isize`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-ret-borrowed.rs:23:14
- |
-LL | with(|o| o)
- | -- ^ returning this value requires that `'1` must outlive `'2`
- | ||
- | |return type of closure is &'2 isize
- | has type `&'1 isize`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: captured variable cannot escape `FnMut` closure body
- --> $DIR/regions-return-ref-to-upvar-issue-17403.rs:17:24
- |
-LL | let mut f = || &mut x; //~ ERROR cannot infer
- | - ^^^^^^ returns a reference to a captured variable which escapes the closure body
- | |
- | inferred to be a `FnMut` closure
- |
- = note: `FnMut` closures only have access to their captured variables while they are executing...
- = note: ...therefore, they cannot allow references to captured variables to escape
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-static-bound.rs:19:5
- |
-LL | fn static_id_wrong_way<'a>(t: &'a ()) -> &'static () where 'static: 'a {
- | -- lifetime `'a` defined here
-LL | t //[ll]~ ERROR E0312
- | ^ returning this value requires that `'a` must outlive `'static`
-
-error[E0621]: explicit lifetime required in the type of `u`
- --> $DIR/regions-static-bound.rs:24:5
- |
-LL | fn error(u: &(), v: &()) {
- | --- help: add explicit lifetime `'static` to the type of `u`: `&'static ()`
-LL | static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of `u` [E0621]
- | ^^^^^^^^^^^^^ lifetime `'static` required
-
-error[E0621]: explicit lifetime required in the type of `v`
- --> $DIR/regions-static-bound.rs:27:5
- |
-LL | fn error(u: &(), v: &()) {
- | --- help: add explicit lifetime `'static` to the type of `v`: `&'static ()`
-...
-LL | static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621]
- | ^^^^^^^^^^^^^^^^^^^^^^ lifetime `'static` required
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-static-bound.rs:24:5
- |
-LL | fn error(u: &(), v: &()) {
- | - - let's call the lifetime of this reference `'2`
- | |
- | let's call the lifetime of this reference `'1`
-LL | static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of `u` [E0621]
- | ^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-static-bound.rs:27:5
- |
-LL | fn error(u: &(), v: &()) {
- | - - let's call the lifetime of this reference `'1`
- | |
- | let's call the lifetime of this reference `'2`
-...
-LL | static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621]
- | ^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to 5 previous errors
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-trait-object-subtyping.rs:25:5
- |
-LL | fn foo3<'a,'b>(x: &'a mut Dummy) -> &'b mut Dummy {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | // Without knowing 'a:'b, we can't coerce
-LL | x //~ ERROR lifetime bound not satisfied
- | ^ cast requires that `'a` must outlive `'b`
-
-error: unsatisfied lifetime constraints
- --> $DIR/regions-trait-object-subtyping.rs:32:5
- |
-LL | fn foo4<'a:'b,'b>(x: Wrapper<&'a mut Dummy>) -> Wrapper<&'b mut Dummy> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | // We can't coerce because it is packed in `Wrapper`
-LL | x //~ ERROR mismatched types
- | ^ returning this value requires that `'b` must outlive `'a`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-variance-contravariant-use-covariant-in-second-position.rs:35:12
- |
-LL | fn use_<'short,'long>(c: S<'long, 'short>,
- | ------ ----- lifetime `'long` defined here
- | |
- | lifetime `'short` defined here
-...
-LL | let _: S<'long, 'long> = c; //~ ERROR E0623
- | ^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-variance-contravariant-use-covariant.rs:33:12
- |
-LL | fn use_<'short,'long>(c: Contravariant<'short>,
- | ------ ----- lifetime `'long` defined here
- | |
- | lifetime `'short` defined here
-...
-LL | let _: Contravariant<'long> = c; //~ ERROR E0623
- | ^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-variance-covariant-use-contravariant.rs:33:12
- |
-LL | fn use_<'short,'long>(c: Covariant<'long>,
- | ------ ----- lifetime `'long` defined here
- | |
- | lifetime `'short` defined here
-...
-LL | let _: Covariant<'short> = c; //~ ERROR E0623
- | ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-variance-invariant-use-contravariant.rs:30:12
- |
-LL | fn use_<'short,'long>(c: Invariant<'long>,
- | ------ ----- lifetime `'long` defined here
- | |
- | lifetime `'short` defined here
-...
-LL | let _: Invariant<'short> = c; //~ ERROR E0623
- | ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/regions-variance-invariant-use-covariant.rs:27:12
- |
-LL | fn use_<'b>(c: Invariant<'b>) {
- | -- lifetime `'b` defined here
-...
-LL | let _: Invariant<'static> = c; //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'static`
-
-error: aborting due to previous error
-
--- /dev/null
+error[E0507]: cannot move out of static item
+ --> $DIR/static-items-cant-move.rs:28:10
+ |
+LL | test(BAR); //~ ERROR cannot move out of static item
+ | ^^^ cannot move out of static item
+
+error[E0507]: cannot move out of immutable static item `BAR`
+ --> $DIR/static-items-cant-move.rs:28:10
+ |
+LL | test(BAR); //~ ERROR cannot move out of static item
+ | ^^^
+ | |
+ | cannot move out of immutable static item `BAR`
+ | cannot move
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
| cannot move out of borrowed content
| help: consider removing the `*`: `&x`
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/std-uncopyable-atomics.rs:19:13
+ |
+LL | let x = *&x; //~ ERROR: cannot move out of borrowed content
+ | ^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
error[E0507]: cannot move out of borrowed content
--> $DIR/std-uncopyable-atomics.rs:21:13
|
| cannot move out of borrowed content
| help: consider removing the `*`: `&x`
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/std-uncopyable-atomics.rs:21:13
+ |
+LL | let x = *&x; //~ ERROR: cannot move out of borrowed content
+ | ^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
error[E0507]: cannot move out of borrowed content
--> $DIR/std-uncopyable-atomics.rs:23:13
|
| cannot move out of borrowed content
| help: consider removing the `*`: `&x`
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/std-uncopyable-atomics.rs:23:13
+ |
+LL | let x = *&x; //~ ERROR: cannot move out of borrowed content
+ | ^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
error[E0507]: cannot move out of borrowed content
--> $DIR/std-uncopyable-atomics.rs:25:13
|
| cannot move out of borrowed content
| help: consider removing the `*`: `&x`
-error: aborting due to 4 previous errors
+error[E0507]: cannot move out of data in a `&` reference
+ --> $DIR/std-uncopyable-atomics.rs:25:13
+ |
+LL | let x = *&x; //~ ERROR: cannot move out of borrowed content
+ | ^^^
+ | |
+ | cannot move out of data in a `&` reference
+ | cannot move
+
+error: aborting due to 8 previous errors
For more information about this error, try `rustc --explain E0507`.
LL | static C: &u32 = &A;
| ^^
-error[E0712]: thread-local variable borrowed past end of function
+warning[E0712]: thread-local variable borrowed past end of function
--> $DIR/thread-local-in-ctfe.rs:19:18
|
LL | static C: &u32 = &A;
| ^^- end of enclosing function is here
| |
| thread-local variables cannot be borrowed beyond the end of the function
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
error[E0625]: thread-local statics cannot be accessed at compile-time
--> $DIR/thread-local-in-ctfe.rs:22:16
LL | const E: &u32 = &A;
| ^^
-error[E0712]: thread-local variable borrowed past end of function
+warning[E0712]: thread-local variable borrowed past end of function
--> $DIR/thread-local-in-ctfe.rs:25:17
|
LL | const E: &u32 = &A;
| ^^- end of enclosing function is here
| |
| thread-local variables cannot be borrowed beyond the end of the function
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
error[E0625]: thread-local statics cannot be accessed at compile-time
--> $DIR/thread-local-in-ctfe.rs:29:5
LL | A
| ^
-error: aborting due to 7 previous errors
+error: aborting due to 5 previous errors
Some errors occurred: E0625, E0712.
For more information about an error, try `rustc --explain E0625`.
--- /dev/null
+error[E0507]: cannot move out of borrowed content
+ --> $DIR/trivial-bounds-leak-copy.rs:19:5
+ |
+LL | *t //~ ERROR
+ | ^^ cannot move out of borrowed content
+
+error[E0507]: cannot move out of `*t` which is behind a `&` reference
+ --> $DIR/trivial-bounds-leak-copy.rs:19:5
+ |
+LL | fn move_out_string(t: &String) -> String {
+ | ------- help: consider changing this to be a mutable reference: `&mut std::string::String`
+LL | *t //~ ERROR
+ | ^^
+ | |
+ | cannot move out of `*t` which is behind a `&` reference
+ | `t` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0507`.
LL | let f = to_fn(|| drop(x)); //~ ERROR cannot move
| ^ cannot move out of captured variable in an `Fn` closure
+error[E0507]: cannot move out of `x`, as it is a captured variable in a `Fn` closure
+ --> $DIR/unboxed-closure-illegal-move.rs:25:31
+ |
+LL | let f = to_fn(|| drop(x)); //~ ERROR cannot move
+ | ^
+ | |
+ | cannot move out of `x`, as it is a captured variable in a `Fn` closure
+ | cannot move
+ |
+help: consider changing this to accept closures that implement `FnMut`
+ --> $DIR/unboxed-closure-illegal-move.rs:25:23
+ |
+LL | let f = to_fn(|| drop(x)); //~ ERROR cannot move
+ | ^^^^^^^^^^
+
error[E0507]: cannot move out of captured variable in an `FnMut` closure
--> $DIR/unboxed-closure-illegal-move.rs:29:35
|
LL | let f = to_fn(move || drop(x)); //~ ERROR cannot move
| ^ cannot move out of captured variable in an `Fn` closure
+error[E0507]: cannot move out of `x`, as it is a captured variable in a `Fn` closure
+ --> $DIR/unboxed-closure-illegal-move.rs:38:36
+ |
+LL | let f = to_fn(move || drop(x)); //~ ERROR cannot move
+ | ^
+ | |
+ | cannot move out of `x`, as it is a captured variable in a `Fn` closure
+ | cannot move
+ |
+help: consider changing this to accept closures that implement `FnMut`
+ --> $DIR/unboxed-closure-illegal-move.rs:38:23
+ |
+LL | let f = to_fn(move || drop(x)); //~ ERROR cannot move
+ | ^^^^^^^^^^^^^^^
+
error[E0507]: cannot move out of captured variable in an `FnMut` closure
--> $DIR/unboxed-closure-illegal-move.rs:42:40
|
LL | let f = to_fn_mut(move || drop(x)); //~ ERROR cannot move
| ^ cannot move out of captured variable in an `FnMut` closure
-error: aborting due to 4 previous errors
+error: aborting due to 6 previous errors
For more information about this error, try `rustc --explain E0507`.
LL | move || set(&mut x); //~ ERROR cannot borrow
| ^^^^^^ cannot borrow as mutable
-error[E0594]: cannot assign to `x`, as it is not declared as mutable
+warning[E0594]: cannot assign to `x`, as it is not declared as mutable
--> $DIR/unboxed-closure-immutable-capture.rs:23:8
|
LL | let x = 0;
...
LL | || x = 1; //~ ERROR cannot assign
| ^^^^^ cannot assign
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
+warning[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/unboxed-closure-immutable-capture.rs:25:12
|
LL | let x = 0;
...
LL | || set(&mut x); //~ ERROR cannot assign
| ^^^^^^ cannot borrow as mutable
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error[E0594]: cannot assign to `x`, as it is not declared as mutable
+warning[E0594]: cannot assign to `x`, as it is not declared as mutable
--> $DIR/unboxed-closure-immutable-capture.rs:26:8
|
LL | let x = 0;
...
LL | || x = 1; //~ ERROR cannot assign
| ^^^^^ cannot assign
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
+warning[E0596]: cannot borrow `x` as mutable, as it is not declared as mutable
--> $DIR/unboxed-closure-immutable-capture.rs:28:12
|
LL | let x = 0;
...
LL | || set(&mut x); //~ ERROR cannot assign
| ^^^^^^ cannot borrow as mutable
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
-error: aborting due to 8 previous errors
+error: aborting due to 4 previous errors
Some errors occurred: E0594, E0596.
For more information about an error, try `rustc --explain E0594`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/unboxed-closures-infer-argument-types-two-region-pointers.rs:27:9
- |
-LL | doit(0, &|x, y| {
- | - - has type `&'1 i32`
- | |
- | has type `&std::cell::Cell<&'2 i32>`
-LL | x.set(y); //~ ERROR E0312
- | ^^^^^^^^ argument requires that `'1` must outlive `'2`
-
-error: aborting due to previous error
-
-error[E0596]: cannot borrow `tick1` as mutable, as it is not declared as mutable
+warning[E0596]: cannot borrow `tick1` as mutable, as it is not declared as mutable
--> $DIR/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs:27:9
|
LL | let tick1 = || {
...
LL | tick1();
| ^^^^^ cannot borrow as mutable
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
error[E0596]: cannot borrow `tick2` as mutable, as it is not declared as mutable
--> $DIR/unboxed-closures-infer-fnmut-calling-fnmut-no-mut.rs:30:5
LL | tick2(); //~ ERROR cannot borrow
| ^^^^^ cannot borrow as mutable
-error: aborting due to 2 previous errors
+error: aborting due to previous error
For more information about this error, try `rustc --explain E0596`.
-error[E0594]: cannot assign to `n`, as it is not declared as mutable
+warning[E0594]: cannot assign to `n`, as it is not declared as mutable
--> $DIR/unboxed-closures-mutate-upvar.rs:25:9
|
LL | let n = 0;
LL | let mut f = to_fn_mut(|| { //~ ERROR closure cannot assign
LL | n += 1;
| ^^^^^^ cannot assign
+ |
+ = warning: This error has been downgraded to a warning for backwards compatibility with previous releases.
+ It represents potential unsoundness in your code.
+ This warning will become a hard error in the future.
error[E0594]: cannot assign to `n`, as it is not declared as mutable
--> $DIR/unboxed-closures-mutate-upvar.rs:42:9
LL | | });
| |_____^
-error: aborting due to 4 previous errors
+error: aborting due to 3 previous errors
For more information about this error, try `rustc --explain E0594`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/dyn-trait-underscore.rs:18:5
- |
-LL | fn a<T>(items: &[T]) -> Box<dyn Iterator<Item=&T>> {
- | - let's call the lifetime of this reference `'1`
-LL | // ^^^^^^^^^^^^^^^^^^^^^ bound *here* defaults to `'static`
-LL | Box::new(items.iter()) //~ ERROR cannot infer an appropriate lifetime
- | ^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/underscore-lifetime-elison-mismatch.rs:11:42
- |
-LL | fn foo(x: &mut Vec<&'_ u8>, y: &'_ u8) { x.push(y); } //~ ERROR lifetime mismatch
- | - - ^^^^^^^^^ argument requires that `'1` must outlive `'2`
- | | |
- | | let's call the lifetime of this reference `'1`
- | let's call the lifetime of this reference `'2`
-
-error: aborting due to previous error
-
LL | !*n; //~ ERROR: cannot move out of borrowed content
| ^^ cannot move out of borrowed content
-error: aborting due to 3 previous errors
+error[E0507]: cannot move out of `*n` which is behind a `&` reference
+ --> $DIR/unop-move-semantics.rs:36:6
+ |
+LL | let n = &y;
+ | -- help: consider changing this to be a mutable reference: `&mut y`
+...
+LL | !*n; //~ ERROR: cannot move out of borrowed content
+ | ^^
+ | |
+ | cannot move out of `*n` which is behind a `&` reference
+ | `n` is a `&` reference, so the data it refers to cannot be moved
+
+error: aborting due to 4 previous errors
Some errors occurred: E0382, E0507.
For more information about an error, try `rustc --explain E0382`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:16:5
- |
-LL | fn iter_cov_key<'a, 'new>(v: IterMut<'a, &'static (), ()>) -> IterMut<'a, &'new (), ()> {
- | ---- lifetime `'new` defined here
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:19:5
- |
-LL | fn iter_cov_val<'a, 'new>(v: IterMut<'a, (), &'static ()>) -> IterMut<'a, (), &'new ()> {
- | ---- lifetime `'new` defined here
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:22:5
- |
-LL | fn iter_contra_key<'a, 'new>(v: IterMut<'a, &'new (), ()>) -> IterMut<'a, &'static (), ()> {
- | ---- lifetime `'new` defined here
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:25:5
- |
-LL | fn iter_contra_val<'a, 'new>(v: IterMut<'a, (), &'new ()>) -> IterMut<'a, (), &'static ()> {
- | ---- lifetime `'new` defined here
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:30:5
- |
-LL | fn occ_cov_key<'a, 'new>(v: OccupiedEntry<'a, &'static (), ()>)
- | ---- lifetime `'new` defined here
-LL | -> OccupiedEntry<'a, &'new (), ()> {
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:34:5
- |
-LL | fn occ_cov_val<'a, 'new>(v: OccupiedEntry<'a, (), &'static ()>)
- | ---- lifetime `'new` defined here
-LL | -> OccupiedEntry<'a, (), &'new ()> {
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:38:5
- |
-LL | fn occ_contra_key<'a, 'new>(v: OccupiedEntry<'a, &'new (), ()>)
- | ---- lifetime `'new` defined here
-LL | -> OccupiedEntry<'a, &'static (), ()> {
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:42:5
- |
-LL | fn occ_contra_val<'a, 'new>(v: OccupiedEntry<'a, (), &'new ()>)
- | ---- lifetime `'new` defined here
-LL | -> OccupiedEntry<'a, (), &'static ()> {
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:47:5
- |
-LL | fn vac_cov_key<'a, 'new>(v: VacantEntry<'a, &'static (), ()>)
- | ---- lifetime `'new` defined here
-LL | -> VacantEntry<'a, &'new (), ()> {
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:51:5
- |
-LL | fn vac_cov_val<'a, 'new>(v: VacantEntry<'a, (), &'static ()>)
- | ---- lifetime `'new` defined here
-LL | -> VacantEntry<'a, (), &'new ()> {
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:55:5
- |
-LL | fn vac_contra_key<'a, 'new>(v: VacantEntry<'a, &'new (), ()>)
- | ---- lifetime `'new` defined here
-LL | -> VacantEntry<'a, &'static (), ()> {
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-btree-invariant-types.rs:59:5
- |
-LL | fn vac_contra_val<'a, 'new>(v: VacantEntry<'a, (), &'new ()>)
- | ---- lifetime `'new` defined here
-LL | -> VacantEntry<'a, (), &'static ()> {
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'new` must outlive `'static`
-
-error: aborting due to 12 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-cell-is-invariant.rs:24:12
- |
-LL | fn use_<'short,'long>(c: Foo<'short>,
- | ------ ----- lifetime `'long` defined here
- | |
- | lifetime `'short` defined here
-...
-LL | let _: Foo<'long> = c; //~ ERROR E0623
- | ^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-contravariant-arg-object.rs:24:5
- |
-LL | fn get_min_from_max<'min, 'max>(v: Box<Get<&'max i32>>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-contravariant-arg-object.rs:32:5
- |
-LL | fn get_max_from_min<'min, 'max, G>(v: Box<Get<&'min i32>>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-contravariant-arg-trait-match.rs:23:5
- |
-LL | fn get_min_from_max<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<G,&'min i32>() //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-contravariant-arg-trait-match.rs:31:5
- |
-LL | fn get_max_from_min<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<G,&'max i32>() //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-contravariant-self-trait-match.rs:23:5
- |
-LL | fn get_min_from_max<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<&'min G>(); //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-contravariant-self-trait-match.rs:32:5
- |
-LL | fn get_max_from_min<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<&'max G>(); //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-covariant-arg-object.rs:25:5
- |
-LL | fn get_min_from_max<'min, 'max>(v: Box<Get<&'max i32>>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-covariant-arg-object.rs:32:5
- |
-LL | fn get_max_from_min<'min, 'max, G>(v: Box<Get<&'min i32>>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-covariant-arg-trait-match.rs:24:5
- |
-LL | fn get_min_from_max<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<G,&'min i32>() //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-covariant-arg-trait-match.rs:30:5
- |
-LL | fn get_max_from_min<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<G,&'max i32>() //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-covariant-self-trait-match.rs:24:5
- |
-LL | fn get_min_from_max<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<&'min G>(); //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-covariant-self-trait-match.rs:30:5
- |
-LL | fn get_max_from_min<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<&'max G>(); //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-invariant-arg-object.rs:21:5
- |
-LL | fn get_min_from_max<'min, 'max>(v: Box<Get<&'max i32>>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-invariant-arg-object.rs:28:5
- |
-LL | fn get_max_from_min<'min, 'max, G>(v: Box<Get<&'min i32>>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-invariant-arg-trait-match.rs:20:5
- |
-LL | fn get_min_from_max<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<G,&'min i32>() //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-invariant-arg-trait-match.rs:26:5
- |
-LL | fn get_max_from_min<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<G,&'max i32>() //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-invariant-self-trait-match.rs:20:5
- |
-LL | fn get_min_from_max<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<&'min G>(); //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-invariant-self-trait-match.rs:26:5
- |
-LL | fn get_max_from_min<'min, 'max, G>()
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | impls_get::<&'max G>(); //~ ERROR mismatched types
- | ^^^^^^^^^^^^^^^^^^^^^^ requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error[E0621]: explicit lifetime required in the type of `get`
- --> $DIR/variance-trait-matching.rs:34:5
- |
-LL | fn get<'a, G>(get: &G) -> i32
- | -- help: add explicit lifetime `'a` to the type of `get`: `&'a G`
-...
-LL | pick(get, &22) //~ ERROR 34:5: 34:9: explicit lifetime required in the type of `get` [E0621]
- | ^^^^^^^^^^^^^^ lifetime `'a` required
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0621`.
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-use-contravariant-struct-1.rs:22:5
- |
-LL | fn foo<'min,'max>(v: SomeStruct<&'max ()>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-use-covariant-struct-1.rs:20:5
- |
-LL | fn foo<'min,'max>(v: SomeStruct<&'min ()>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to previous error
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/variance-use-invariant-struct-1.rs:22:5
- |
-LL | fn foo<'min,'max>(v: SomeStruct<&'max ()>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: unsatisfied lifetime constraints
- --> $DIR/variance-use-invariant-struct-1.rs:29:5
- |
-LL | fn bar<'min,'max>(v: SomeStruct<&'min ()>)
- | ---- ---- lifetime `'max` defined here
- | |
- | lifetime `'min` defined here
-...
-LL | v //~ ERROR mismatched types
- | ^ returning this value requires that `'min` must outlive `'max`
-
-error: aborting due to 2 previous errors
-
+++ /dev/null
-error: unsatisfied lifetime constraints
- --> $DIR/wf-static-method.rs:27:9
- |
-LL | impl<'a, 'b> Foo<'a, 'b, Evil<'a, 'b>> for () {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | u //~ ERROR E0312
- | ^ returning this value requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/wf-static-method.rs:36:18
- |
-LL | impl<'a, 'b> Foo<'a, 'b, ()> for IndirectEvil<'a, 'b> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-...
-LL | let me = Self::make_me(); //~ ERROR lifetime bound not satisfied
- | ^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/wf-static-method.rs:43:9
- |
-LL | impl<'a, 'b> Evil<'a, 'b> {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | fn inherent_evil(u: &'b u32) -> &'a u32 {
-LL | u //~ ERROR E0312
- | ^ returning this value requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/wf-static-method.rs:51:5
- |
-LL | fn evil<'a, 'b>(b: &'b u32) -> &'a u32 {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | <()>::static_evil(b) //~ ERROR cannot infer an appropriate lifetime
- | ^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'b` must outlive `'a`
-
-error: unsatisfied lifetime constraints
- --> $DIR/wf-static-method.rs:55:5
- |
-LL | fn indirect_evil<'a, 'b>(b: &'b u32) -> &'a u32 {
- | -- -- lifetime `'b` defined here
- | |
- | lifetime `'a` defined here
-LL | <IndirectEvil>::static_evil(b)
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'b` must outlive `'a`
-
-error: aborting due to 5 previous errors
-
match self.config.compare_mode {
Some(CompareMode::Nll) => {
- rustc.args(&["-Zborrowck=mir", "-Ztwo-phase-borrows"]);
+ rustc.args(&["-Zborrowck=migrate", "-Ztwo-phase-borrows"]);
}
Some(CompareMode::Polonius) => {
rustc.args(&["-Zpolonius", "-Zborrowck=mir", "-Ztwo-phase-borrows"]);