mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-01 19:23:50 +00:00
656db98bd9
CC #99430
153 lines
8.0 KiB
Plaintext
153 lines
8.0 KiB
Plaintext
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:8:5
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape0<'f>(_: usize, ap: ...) -> VaListImpl<'f> {
|
|
| -- -- has type `VaListImpl<'1>`
|
|
| |
|
|
| lifetime `'f` defined here
|
|
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`
|
|
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
|
|
|
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:8:5
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape0<'f>(_: usize, ap: ...) -> VaListImpl<'f> {
|
|
| -- -- has type `VaListImpl<'1>`
|
|
| |
|
|
| lifetime `'f` defined here
|
|
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`
|
|
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
|
|
|
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:14:5
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape1(_: usize, ap: ...) -> VaListImpl<'static> {
|
|
| -- has type `VaListImpl<'1>`
|
|
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`
|
|
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
|
|
|
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:18:31
|
|
|
|
|
LL | let _ = ap.with_copy(|ap| ap);
|
|
| --- ^^ returning this value requires that `'1` must outlive `'2`
|
|
| | |
|
|
| | return type of closure is VaList<'2, '_>
|
|
| has type `VaList<'1, '_>`
|
|
|
|
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:22:5
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape3(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
|
|
| ------- ------- has type `VaListImpl<'2>`
|
|
| |
|
|
| has type `&mut VaListImpl<'1>`
|
|
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`
|
|
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
|
|
|
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:22:5
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape3(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
|
|
| ------- ------- has type `VaListImpl<'2>`
|
|
| |
|
|
| has type `&mut VaListImpl<'1>`
|
|
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`
|
|
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
|
|
|
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:28:5
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape4(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
|
|
| ------- ------- has type `VaListImpl<'2>`
|
|
| |
|
|
| has type `&mut VaListImpl<'1>`
|
|
LL | ap0 = &mut ap1;
|
|
| ^^^^^^^^^^^^^^ assignment requires that `'1` must outlive `'2`
|
|
|
|
|
= 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
|
|
|
|
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:28:5
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape4(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
|
|
| ------- ------- has type `VaListImpl<'2>`
|
|
| |
|
|
| has type `&mut VaListImpl<'1>`
|
|
LL | ap0 = &mut ap1;
|
|
| ^^^^^^^^^^^^^^ assignment requires that `'2` must outlive `'1`
|
|
|
|
|
= 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
|
|
|
|
error[E0597]: `ap1` does not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:28:11
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape4(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
|
|
| - ------- binding `ap1` declared here
|
|
| |
|
|
| let's call the lifetime of this reference `'3`
|
|
LL | ap0 = &mut ap1;
|
|
| ------^^^^^^^^
|
|
| | |
|
|
| | borrowed value does not live long enough
|
|
| assignment requires that `ap1` is borrowed for `'3`
|
|
...
|
|
LL | }
|
|
| - `ap1` dropped here while still borrowed
|
|
|
|
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:35:12
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape5(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
|
|
| ------- ------- has type `VaListImpl<'2>`
|
|
| |
|
|
| has type `&mut VaListImpl<'1>`
|
|
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`
|
|
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
|
|
|
error: lifetime may not live long enough
|
|
--> $DIR/variadic-ffi-4.rs:35:12
|
|
|
|
|
LL | pub unsafe extern "C" fn no_escape5(_: usize, mut ap0: &mut VaListImpl, mut ap1: ...) {
|
|
| ------- ------- has type `VaListImpl<'2>`
|
|
| |
|
|
| has type `&mut VaListImpl<'1>`
|
|
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`
|
|
= help: see <https://doc.rust-lang.org/nomicon/subtyping.html> for more information about variance
|
|
|
|
error: aborting due to 11 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0597`.
|