Rust errors / Ownership and borrowing
Rust compiler error · checked with rustc 1.99.0
Rust error E0496: lifetime name `'a` shadows a lifetime name that is already in scope
What it meansA lifetime name is shadowing another lifetime name.
What rustc prints
error[E0496]: lifetime name `'a` shadows a lifetime name that is already in scope
--> main.rs:6:10
|
5 | impl<'a> Foo<'a> {
| -- first declared here
6 | fn f<'a>(x: &'a i32) { // error: lifetime name `'a` shadows a lifetime
| ^^ lifetime `'a` already in scopeReal 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
A lifetime name is shadowing another lifetime name.
Erroneous code example:
struct Foo<'a> {
a: &'a i32,
}
impl<'a> Foo<'a> {
fn f<'a>(x: &'a i32) { // error: lifetime name `'a` shadows a lifetime
// name that is already in scope
}
}
Please change the name of one of the lifetimes to remove this error. Example:
struct Foo<'a> {
a: &'a i32,
}
impl<'a> Foo<'a> {
fn f<'b>(x: &'b i32) { // ok!
}
}
fn main() {
}From rustc --explain E0496 (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
- E0492interior mutable shared borrows of temporaries that have their lifetime extended until the end of the program are not allowed
- E0493destructor of `(DropType, DropType)` cannot be evaluated at compile-time
- E0500closure requires unique access to `*jon_snow` but it is already borrowed
Up next
Often hit nextE0382: borrow of moved valueA related error from the same family.Read it next →Did this answer your question?