Rust errors / Ownership and borrowing
Rust compiler error · checked with rustc 1.99.0
Rust error E0478: A lifetime bound was not satisfied
What it meansA lifetime bound was not satisfied.
The compiler team's explanation
A lifetime bound was not satisfied.
Erroneous code example:
// Check that the explicit lifetime bound (`'SnowWhite`, in this example) must
// outlive all the superbounds from the trait (`'kiss`, in this example).
trait Wedding<'t>: 't { }
struct Prince<'kiss, 'SnowWhite> {
child: Box<Wedding<'kiss> + 'SnowWhite>,
// error: lifetime bound not satisfied
}
In this example, the 'SnowWhite lifetime is supposed to outlive the 'kiss lifetime but the declaration of the Prince struct doesn't enforce it. To fix this issue, you need to specify it:
trait Wedding<'t>: 't { }
struct Prince<'kiss, 'SnowWhite: 'kiss> { // You say here that 'SnowWhite
// must live longer than 'kiss.
child: Box<Wedding<'kiss> + 'SnowWhite>, // And now it's all good!
}From rustc --explain E0478 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0382borrow of moved value
- E0499cannot borrow as mutable more than once at a time
- E0502cannot borrow as mutable because it is also borrowed as immutable
- E0106missing lifetime specifier
- E0392type parameter `T` is never used
- E0476lifetime of the source pointer does not outlive lifetime bound of the object type
- E0491in type `&'a Foo<'b>`, reference has a longer lifetime than the data it references
- E0492interior mutable shared borrows of temporaries that have their lifetime extended until the end of the program are not allowed
Up next
Often hit nextE0382: borrow of moved valueA related error from the same family.Read it next →Did this answer your question?