mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Rollup merge of #95607 - compiler-errors:issue-95272, r=Aaron1011
Note invariance reason for FnDef types Fixes #95272. Is it worthwhile even printing a variance explanation here? Or should I try to track down which function parameter is responsible for the invariance? r? ``@Aaron1011`` since you wrote #89336
This commit is contained in:
commit
2a7e7bd0e0
@ -330,14 +330,14 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
|
||||
ty::RawPtr(ty_mut) => {
|
||||
assert_eq!(ty_mut.mutbl, rustc_hir::Mutability::Mut);
|
||||
(
|
||||
format!("a mutable pointer to {}", ty_mut.ty),
|
||||
format!("a mutable pointer to `{}`", ty_mut.ty),
|
||||
"mutable pointers are invariant over their type parameter".to_string(),
|
||||
)
|
||||
}
|
||||
ty::Ref(_, inner_ty, mutbl) => {
|
||||
assert_eq!(*mutbl, rustc_hir::Mutability::Mut);
|
||||
(
|
||||
format!("a mutable reference to {}", inner_ty),
|
||||
format!("a mutable reference to `{}`", inner_ty),
|
||||
"mutable references are invariant over their type parameter"
|
||||
.to_string(),
|
||||
)
|
||||
@ -351,10 +351,21 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
|
||||
let adt_desc = adt.descr();
|
||||
|
||||
let desc = format!(
|
||||
"the type {ty}, which makes the generic argument {generic_arg} invariant"
|
||||
"the type `{ty}`, which makes the generic argument `{generic_arg}` invariant"
|
||||
);
|
||||
let note = format!(
|
||||
"the {adt_desc} {base_ty} is invariant over the parameter {base_generic_arg}"
|
||||
"the {adt_desc} `{base_ty}` is invariant over the parameter `{base_generic_arg}`"
|
||||
);
|
||||
(desc, note)
|
||||
}
|
||||
ty::FnDef(def_id, _) => {
|
||||
let name = self.infcx.tcx.item_name(*def_id);
|
||||
let identity_substs =
|
||||
InternalSubsts::identity_for_item(self.infcx.tcx, *def_id);
|
||||
let desc = format!("a function pointer to `{name}`");
|
||||
let note = format!(
|
||||
"the function `{name}` is invariant over the parameter `{}`",
|
||||
identity_substs[param_index as usize]
|
||||
);
|
||||
(desc, note)
|
||||
}
|
||||
|
@ -10,8 +10,8 @@ LL | (a, b)
|
||||
| ^^^^^^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of the type Type<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Type<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Type<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Type<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -26,8 +26,8 @@ LL | (a, b)
|
||||
| ^^^^^^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of the type Type<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Type<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Type<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Type<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
help: `'a` and `'b` must be the same: replace one with the other
|
||||
|
@ -10,8 +10,8 @@ LL | let a = bar(f, x);
|
||||
| ^^^^^^^^^ argument requires that `'a` must outlive `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of the type Type<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Type<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Type<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Type<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -26,8 +26,8 @@ LL | let b = bar(f, y);
|
||||
| ^^^^^^^^^ argument requires that `'b` must outlive `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of the type Type<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Type<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Type<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Type<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
help: `'a` and `'b` must be the same: replace one with the other
|
||||
|
@ -7,8 +7,8 @@ LL | fn baz<'a, 'b>(x: Type<'a>) -> Type<'static> {
|
||||
LL | bar(foo, x)
|
||||
| ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type Type<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Type<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Type<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Type<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -8,8 +8,8 @@ LL | pub unsafe extern "C" fn no_escape0<'f>(_: usize, ap: ...) -> VaListImpl<'f
|
||||
LL | ap
|
||||
| ^^ function was supposed to return data with lifetime `'1` but it is returning data with lifetime `'f`
|
||||
|
|
||||
= note: requirement occurs because of the type VaListImpl<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct VaListImpl<'f> is invariant over the parameter 'f
|
||||
= note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -22,8 +22,8 @@ LL | pub unsafe extern "C" fn no_escape0<'f>(_: usize, ap: ...) -> VaListImpl<'f
|
||||
LL | ap
|
||||
| ^^ function was supposed to return data with lifetime `'f` but it is returning data with lifetime `'1`
|
||||
|
|
||||
= note: requirement occurs because of the type VaListImpl<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct VaListImpl<'f> is invariant over the parameter 'f
|
||||
= note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -34,8 +34,8 @@ LL | pub unsafe extern "C" fn no_escape1(_: usize, ap: ...) -> VaListImpl<'stati
|
||||
LL | ap
|
||||
| ^^ returning this value requires that `'1` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type VaListImpl<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct VaListImpl<'f> is invariant over the parameter 'f
|
||||
= note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -57,8 +57,8 @@ LL | pub unsafe extern "C" fn no_escape3(_: usize, mut ap0: &mut VaListImpl, mut
|
||||
LL | *ap0 = ap1;
|
||||
| ^^^^ assignment requires that `'1` must outlive `'2`
|
||||
|
|
||||
= note: requirement occurs because of the type VaListImpl<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct VaListImpl<'f> is invariant over the parameter 'f
|
||||
= note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -71,8 +71,8 @@ LL | pub unsafe extern "C" fn no_escape3(_: usize, mut ap0: &mut VaListImpl, mut
|
||||
LL | *ap0 = ap1;
|
||||
| ^^^^ assignment requires that `'2` must outlive `'1`
|
||||
|
|
||||
= note: requirement occurs because of the type VaListImpl<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct VaListImpl<'f> is invariant over the parameter 'f
|
||||
= note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -85,7 +85,7 @@ LL | pub unsafe extern "C" fn no_escape4(_: usize, mut ap0: &mut VaListImpl, mut
|
||||
LL | ap0 = &mut ap1;
|
||||
| ^^^^^^^^^^^^^^ assignment requires that `'1` must outlive `'2`
|
||||
|
|
||||
= note: requirement occurs because of a mutable reference to VaListImpl<'_>
|
||||
= note: requirement occurs because of a mutable reference to `VaListImpl<'_>`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
@ -99,7 +99,7 @@ LL | pub unsafe extern "C" fn no_escape4(_: usize, mut ap0: &mut VaListImpl, mut
|
||||
LL | ap0 = &mut ap1;
|
||||
| ^^^^^^^^^^^^^^ assignment requires that `'2` must outlive `'1`
|
||||
|
|
||||
= note: requirement occurs because of a mutable reference to VaListImpl<'_>
|
||||
= note: requirement occurs because of a mutable reference to `VaListImpl<'_>`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
@ -127,8 +127,8 @@ LL | pub unsafe extern "C" fn no_escape5(_: usize, mut ap0: &mut VaListImpl, mut
|
||||
LL | *ap0 = ap1.clone();
|
||||
| ^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
|
||||
|
|
||||
= note: requirement occurs because of the type VaListImpl<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct VaListImpl<'f> is invariant over the parameter 'f
|
||||
= note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -141,8 +141,8 @@ LL | pub unsafe extern "C" fn no_escape5(_: usize, mut ap0: &mut VaListImpl, mut
|
||||
LL | *ap0 = ap1.clone();
|
||||
| ^^^^^^^^^^^ argument requires that `'2` must outlive `'1`
|
||||
|
|
||||
= note: requirement occurs because of the type VaListImpl<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct VaListImpl<'f> is invariant over the parameter 'f
|
||||
= note: requirement occurs because of the type `VaListImpl<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `VaListImpl<'f>` is invariant over the parameter `'f`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to 11 previous errors
|
||||
|
@ -13,8 +13,8 @@ LL | | fn(Inv<'y>)) }
|
||||
| |______________- in this macro invocation
|
||||
|
|
||||
= help: consider adding the following bound: `'x: 'y`
|
||||
= note: requirement occurs because of the type Inv<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Inv<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Inv<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Inv<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
= note: this error originates in the macro `check` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
@ -33,8 +33,8 @@ LL | | fn(Inv<'y>)) }
|
||||
| |______________- in this macro invocation
|
||||
|
|
||||
= help: consider adding the following bound: `'x: 'y`
|
||||
= note: requirement occurs because of the type Inv<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Inv<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Inv<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Inv<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
= note: this error originates in the macro `check` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
|
@ -9,7 +9,7 @@ LL | match self.0 { ref mut x => x }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of a mutable reference to &i32
|
||||
= note: requirement occurs because of a mutable reference to `&i32`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
|
@ -10,7 +10,7 @@ LL | x
|
||||
| ^ associated function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of a mutable reference to &i32
|
||||
= note: requirement occurs because of a mutable reference to `&i32`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
|
@ -52,8 +52,8 @@ LL | | });
|
||||
| |______`cell_a` escapes the function body here
|
||||
| argument requires that `'a` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type Cell<&'_#10r u32>, which makes the generic argument &'_#10r u32 invariant
|
||||
= note: the struct Cell<T> is invariant over the parameter T
|
||||
= note: requirement occurs because of the type `Cell<&'_#10r u32>`, which makes the generic argument `&'_#10r u32` invariant
|
||||
= note: the struct `Cell<T>` is invariant over the parameter `T`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -52,8 +52,8 @@ LL | | });
|
||||
| |______`cell_a` escapes the function body here
|
||||
| argument requires that `'a` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type Cell<&'_#11r u32>, which makes the generic argument &'_#11r u32 invariant
|
||||
= note: the struct Cell<T> is invariant over the parameter T
|
||||
= note: requirement occurs because of the type `Cell<&'_#11r u32>`, which makes the generic argument `&'_#11r u32` invariant
|
||||
= note: the struct `Cell<T>` is invariant over the parameter `T`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
17
src/test/ui/nll/issue-95272.rs
Normal file
17
src/test/ui/nll/issue-95272.rs
Normal file
@ -0,0 +1,17 @@
|
||||
#![feature(nll)]
|
||||
|
||||
use std::cell::Cell;
|
||||
|
||||
fn check<'a, 'b>(x: Cell<&'a ()>, y: Cell<&'b ()>)
|
||||
where
|
||||
'a: 'b,
|
||||
{
|
||||
}
|
||||
|
||||
fn test<'a, 'b>(x: Cell<&'a ()>, y: Cell<&'b ()>) {
|
||||
let f = check;
|
||||
//~^ ERROR lifetime may not live long enough
|
||||
f(x, y);
|
||||
}
|
||||
|
||||
fn main() {}
|
17
src/test/ui/nll/issue-95272.stderr
Normal file
17
src/test/ui/nll/issue-95272.stderr
Normal file
@ -0,0 +1,17 @@
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/issue-95272.rs:12:13
|
||||
|
|
||||
LL | fn test<'a, 'b>(x: Cell<&'a ()>, y: Cell<&'b ()>) {
|
||||
| -- -- lifetime `'b` defined here
|
||||
| |
|
||||
| lifetime `'a` defined here
|
||||
LL | let f = check;
|
||||
| ^^^^^ assignment requires that `'a` must outlive `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of a function pointer to `check`
|
||||
= note: the function `check` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -34,7 +34,7 @@ LL | x
|
||||
| ^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of a mutable pointer to &i32
|
||||
= note: requirement occurs because of a mutable pointer to `&i32`
|
||||
= note: mutable pointers are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
@ -50,7 +50,7 @@ LL | x
|
||||
| ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of a mutable pointer to &i32
|
||||
= note: requirement occurs because of a mutable pointer to `&i32`
|
||||
= note: mutable pointers are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
|
@ -9,7 +9,7 @@ LL | x == y;
|
||||
| ^ requires that `'a` must outlive `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of a mutable reference to &i32
|
||||
= note: requirement occurs because of a mutable reference to `&i32`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
@ -24,7 +24,7 @@ LL | x == y;
|
||||
| ^ requires that `'b` must outlive `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of a mutable reference to &i32
|
||||
= note: requirement occurs because of a mutable reference to `&i32`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
@ -41,7 +41,7 @@ LL | x == y;
|
||||
| ^ requires that `'a` must outlive `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of a mutable pointer to &i32
|
||||
= note: requirement occurs because of a mutable pointer to `&i32`
|
||||
= note: mutable pointers are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
@ -56,7 +56,7 @@ LL | x == y;
|
||||
| ^ requires that `'b` must outlive `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of a mutable pointer to &i32
|
||||
= note: requirement occurs because of a mutable pointer to `&i32`
|
||||
= note: mutable pointers are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
@ -73,7 +73,7 @@ LL | f == g;
|
||||
| ^ requires that `'a` must outlive `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of a mutable reference to &i32
|
||||
= note: requirement occurs because of a mutable reference to `&i32`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
@ -88,7 +88,7 @@ LL | f == g;
|
||||
| ^ requires that `'b` must outlive `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of a mutable reference to &i32
|
||||
= note: requirement occurs because of a mutable reference to `&i32`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
|
@ -9,8 +9,8 @@ LL | Foo { x, y };
|
||||
| ^ this usage requires that `'a` must outlive `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of the type Cell<&u32>, which makes the generic argument &u32 invariant
|
||||
= note: the struct Cell<T> is invariant over the parameter T
|
||||
= note: requirement occurs because of the type `Cell<&u32>`, which makes the generic argument `&u32` invariant
|
||||
= note: the struct `Cell<T>` is invariant over the parameter `T`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -12,8 +12,8 @@ LL | x.unwrap()
|
||||
| `x` escapes the function body here
|
||||
| argument requires that `'a` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type Invariant<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Invariant<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Invariant<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -23,7 +23,7 @@ LL | a(x, y);
|
||||
| ^^^^^^^ argument requires that `'b` must outlive `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of a mutable reference to &isize
|
||||
= note: requirement occurs because of a mutable reference to `&isize`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
|
@ -23,7 +23,7 @@ LL | a(x, y, z);
|
||||
| ^^^^^^^^^^ argument requires that `'b` must outlive `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of a mutable reference to &isize
|
||||
= note: requirement occurs because of a mutable reference to `&isize`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
|
@ -10,8 +10,8 @@ LL | a.bigger_region(b)
|
||||
| ^^^^^^^^^^^^^^^^^^ argument requires that `'y` must outlive `'x`
|
||||
|
|
||||
= help: consider adding the following bound: `'y: 'x`
|
||||
= note: requirement occurs because of the type Inv<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Inv<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Inv<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Inv<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -10,8 +10,8 @@ LL | f.method(b);
|
||||
| ^^^^^^^^^^^ argument requires that `'b` must outlive `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of the type Inv<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Inv<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Inv<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Inv<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -6,8 +6,8 @@ LL | fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
|
||||
LL | b_isize
|
||||
| ^^^^^^^ returning this value requires that `'r` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type Invariant<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Invariant<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Invariant<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -6,8 +6,8 @@ LL | fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
|
||||
LL | b_isize
|
||||
| ^^^^^^^ returning this value requires that `'r` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type Invariant<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Invariant<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Invariant<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -6,8 +6,8 @@ LL | fn to_longer_lifetime<'r>(b_isize: Invariant<'r>) -> Invariant<'static> {
|
||||
LL | b_isize
|
||||
| ^^^^^^^ returning this value requires that `'r` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type Invariant<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Invariant<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Invariant<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -17,8 +17,8 @@ LL | fn take_indirect2<'a,'b>(p: Indirect2<'a>) -> Indirect2<'b> { p }
|
||||
| lifetime `'a` defined here
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of the type Indirect2<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Indirect2<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Indirect2<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Indirect2<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -30,8 +30,8 @@ LL | fn take_indirect2<'a,'b>(p: Indirect2<'a>) -> Indirect2<'b> { p }
|
||||
| lifetime `'a` defined here
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of the type Indirect2<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Indirect2<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Indirect2<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Indirect2<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
help: `'b` and `'a` must be the same: replace one with the other
|
||||
|
@ -23,7 +23,7 @@ LL | a(x, y);
|
||||
| ^^^^^^^ argument requires that `'b` must outlive `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of a mutable reference to &isize
|
||||
= note: requirement occurs because of a mutable reference to `&isize`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
|
@ -10,7 +10,7 @@ LL | x
|
||||
| ^ function was supposed to return data with lifetime `'b` but it is returning data with lifetime `'a`
|
||||
|
|
||||
= help: consider adding the following bound: `'a: 'b`
|
||||
= note: requirement occurs because of a mutable reference to dyn Dummy
|
||||
= note: requirement occurs because of a mutable reference to `dyn Dummy`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
@ -26,7 +26,7 @@ LL | x
|
||||
| ^ function was supposed to return data with lifetime `'a` but it is returning data with lifetime `'b`
|
||||
|
|
||||
= help: consider adding the following bound: `'b: 'a`
|
||||
= note: requirement occurs because of a mutable reference to dyn Dummy
|
||||
= note: requirement occurs because of a mutable reference to `dyn Dummy`
|
||||
= note: mutable references are invariant over their type parameter
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
|
@ -10,8 +10,8 @@ LL | let _: Invariant<'short> = c;
|
||||
| ^^^^^^^^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
|
||||
|
|
||||
= help: consider adding the following bound: `'short: 'long`
|
||||
= note: requirement occurs because of the type Invariant<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Invariant<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Invariant<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -7,8 +7,8 @@ LL | fn use_<'b>(c: Invariant<'b>) {
|
||||
LL | let _: Invariant<'static> = c;
|
||||
| ^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type Invariant<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Invariant<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Invariant<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Invariant<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -6,8 +6,8 @@ LL | fn iter_cov_key<'a, 'new>(v: IterMut<'a, &'static (), ()>) -> IterMut<'a, &
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::IterMut<'_, &(), ()>, which makes the generic argument &() invariant
|
||||
= note: the struct std::collections::btree_map::IterMut<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::IterMut<'_, &(), ()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `std::collections::btree_map::IterMut<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -18,8 +18,8 @@ LL | fn iter_cov_val<'a, 'new>(v: IterMut<'a, (), &'static ()>) -> IterMut<'a, (
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::IterMut<'_, (), &()>, which makes the generic argument () invariant
|
||||
= note: the struct std::collections::btree_map::IterMut<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::IterMut<'_, (), &()>`, which makes the generic argument `()` invariant
|
||||
= note: the struct `std::collections::btree_map::IterMut<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -30,8 +30,8 @@ LL | fn iter_contra_key<'a, 'new>(v: IterMut<'a, &'new (), ()>) -> IterMut<'a, &
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::IterMut<'_, &(), ()>, which makes the generic argument &() invariant
|
||||
= note: the struct std::collections::btree_map::IterMut<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::IterMut<'_, &(), ()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `std::collections::btree_map::IterMut<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -42,8 +42,8 @@ LL | fn iter_contra_val<'a, 'new>(v: IterMut<'a, (), &'new ()>) -> IterMut<'a, (
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::IterMut<'_, (), &()>, which makes the generic argument () invariant
|
||||
= note: the struct std::collections::btree_map::IterMut<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::IterMut<'_, (), &()>`, which makes the generic argument `()` invariant
|
||||
= note: the struct `std::collections::btree_map::IterMut<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -54,8 +54,8 @@ LL | fn range_cov_key<'a, 'new>(v: RangeMut<'a, &'static (), ()>) -> RangeMut<'a
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type RangeMut<'_, &(), ()>, which makes the generic argument &() invariant
|
||||
= note: the struct RangeMut<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `RangeMut<'_, &(), ()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `RangeMut<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -66,8 +66,8 @@ LL | fn range_cov_val<'a, 'new>(v: RangeMut<'a, (), &'static ()>) -> RangeMut<'a
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type RangeMut<'_, (), &()>, which makes the generic argument () invariant
|
||||
= note: the struct RangeMut<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `RangeMut<'_, (), &()>`, which makes the generic argument `()` invariant
|
||||
= note: the struct `RangeMut<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -78,8 +78,8 @@ LL | fn range_contra_key<'a, 'new>(v: RangeMut<'a, &'new (), ()>) -> RangeMut<'a
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type RangeMut<'_, &(), ()>, which makes the generic argument &() invariant
|
||||
= note: the struct RangeMut<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `RangeMut<'_, &(), ()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `RangeMut<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -90,8 +90,8 @@ LL | fn range_contra_val<'a, 'new>(v: RangeMut<'a, (), &'new ()>) -> RangeMut<'a
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type RangeMut<'_, (), &()>, which makes the generic argument () invariant
|
||||
= note: the struct RangeMut<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `RangeMut<'_, (), &()>`, which makes the generic argument `()` invariant
|
||||
= note: the struct `RangeMut<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -103,8 +103,8 @@ LL | -> OccupiedEntry<'a, &'new (), ()> {
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::OccupiedEntry<'_, &(), ()>, which makes the generic argument &() invariant
|
||||
= note: the struct std::collections::btree_map::OccupiedEntry<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::OccupiedEntry<'_, &(), ()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `std::collections::btree_map::OccupiedEntry<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -116,8 +116,8 @@ LL | -> OccupiedEntry<'a, (), &'new ()> {
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::OccupiedEntry<'_, (), &()>, which makes the generic argument () invariant
|
||||
= note: the struct std::collections::btree_map::OccupiedEntry<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::OccupiedEntry<'_, (), &()>`, which makes the generic argument `()` invariant
|
||||
= note: the struct `std::collections::btree_map::OccupiedEntry<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -129,8 +129,8 @@ LL | -> OccupiedEntry<'a, &'static (), ()> {
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::OccupiedEntry<'_, &(), ()>, which makes the generic argument &() invariant
|
||||
= note: the struct std::collections::btree_map::OccupiedEntry<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::OccupiedEntry<'_, &(), ()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `std::collections::btree_map::OccupiedEntry<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -142,8 +142,8 @@ LL | -> OccupiedEntry<'a, (), &'static ()> {
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::OccupiedEntry<'_, (), &()>, which makes the generic argument () invariant
|
||||
= note: the struct std::collections::btree_map::OccupiedEntry<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::OccupiedEntry<'_, (), &()>`, which makes the generic argument `()` invariant
|
||||
= note: the struct `std::collections::btree_map::OccupiedEntry<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -155,8 +155,8 @@ LL | -> VacantEntry<'a, &'new (), ()> {
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::VacantEntry<'_, &(), ()>, which makes the generic argument &() invariant
|
||||
= note: the struct std::collections::btree_map::VacantEntry<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::VacantEntry<'_, &(), ()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `std::collections::btree_map::VacantEntry<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -168,8 +168,8 @@ LL | -> VacantEntry<'a, (), &'new ()> {
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::VacantEntry<'_, (), &()>, which makes the generic argument () invariant
|
||||
= note: the struct std::collections::btree_map::VacantEntry<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::VacantEntry<'_, (), &()>`, which makes the generic argument `()` invariant
|
||||
= note: the struct `std::collections::btree_map::VacantEntry<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -181,8 +181,8 @@ LL | -> VacantEntry<'a, &'static (), ()> {
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::VacantEntry<'_, &(), ()>, which makes the generic argument &() invariant
|
||||
= note: the struct std::collections::btree_map::VacantEntry<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::VacantEntry<'_, &(), ()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `std::collections::btree_map::VacantEntry<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -194,8 +194,8 @@ LL | -> VacantEntry<'a, (), &'static ()> {
|
||||
LL | v
|
||||
| ^ returning this value requires that `'new` must outlive `'static`
|
||||
|
|
||||
= note: requirement occurs because of the type std::collections::btree_map::VacantEntry<'_, (), &()>, which makes the generic argument () invariant
|
||||
= note: the struct std::collections::btree_map::VacantEntry<'a, K, V> is invariant over the parameter K
|
||||
= note: requirement occurs because of the type `std::collections::btree_map::VacantEntry<'_, (), &()>`, which makes the generic argument `()` invariant
|
||||
= note: the struct `std::collections::btree_map::VacantEntry<'a, K, V>` is invariant over the parameter `K`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to 16 previous errors
|
||||
|
@ -10,8 +10,8 @@ LL | let _: Foo<'long> = c;
|
||||
| ^^^^^^^^^^ type annotation requires that `'short` must outlive `'long`
|
||||
|
|
||||
= help: consider adding the following bound: `'short: 'long`
|
||||
= note: requirement occurs because of the type Foo<'_>, which makes the generic argument '_ invariant
|
||||
= note: the struct Foo<'a> is invariant over the parameter 'a
|
||||
= note: requirement occurs because of the type `Foo<'_>`, which makes the generic argument `'_` invariant
|
||||
= note: the struct `Foo<'a>` is invariant over the parameter `'a`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -10,8 +10,8 @@ LL | v
|
||||
| ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min`
|
||||
|
|
||||
= help: consider adding the following bound: `'min: 'max`
|
||||
= note: requirement occurs because of the type SomeStruct<&()>, which makes the generic argument &() invariant
|
||||
= note: the struct SomeStruct<T> is invariant over the parameter T
|
||||
= note: requirement occurs because of the type `SomeStruct<&()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `SomeStruct<T>` is invariant over the parameter `T`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: lifetime may not live long enough
|
||||
@ -26,8 +26,8 @@ LL | v
|
||||
| ^ function was supposed to return data with lifetime `'max` but it is returning data with lifetime `'min`
|
||||
|
|
||||
= help: consider adding the following bound: `'min: 'max`
|
||||
= note: requirement occurs because of the type SomeStruct<&()>, which makes the generic argument &() invariant
|
||||
= note: the struct SomeStruct<T> is invariant over the parameter T
|
||||
= note: requirement occurs because of the type `SomeStruct<&()>`, which makes the generic argument `&()` invariant
|
||||
= note: the struct `SomeStruct<T>` is invariant over the parameter `T`
|
||||
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
Loading…
Reference in New Issue
Block a user