Rust errors / Ownership and borrowing
Rust compiler error · checked with rustc 1.99.0
Rust error E0226: only a single explicit lifetime bound is permitted
What it meansMore than one explicit lifetime bound was used on a trait object.
What rustc prints
error[E0226]: only a single explicit lifetime bound is permitted
--> main.rs:3:33
|
3 | type T<'a, 'b> = dyn Foo + 'a + 'b; // error: Trait object `arg` has two
| ^^Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
More than one explicit lifetime bound was used on a trait object.
Example of erroneous code:
trait Foo {}
type T<'a, 'b> = dyn Foo + 'a + 'b; // error: Trait object `arg` has two
// lifetime bound, 'a and 'b.
Here T is a trait object with two explicit lifetime bounds, 'a and 'b.
Only a single explicit lifetime bound is permitted on trait objects. To fix this error, consider removing one of the lifetime bounds:
trait Foo {}
type T<'a> = dyn Foo + 'a;From rustc --explain E0226 (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
- E0195lifetime parameters do not match the trait definition
- E0207the type parameter `T` is not constrained by the impl trait, self type, or predicates
- E0227ambiguous lifetime bound, explicit lifetime bound required
- E0228cannot deduce the lifetime bound for this trait object type from context
Up next
Often hit nextE0382: borrow of moved valueA related error from the same family.Read it next →Did this answer your question?