Understanding Rust Error E0090 - Wrong Number of Lifetime Arguments

Introduction to Rust Error E0090

Rust Error E0090 occurs when a function call has an incorrect number of lifetime arguments compared to what was expected. Lifetime arguments are essential in Rust to manage memory safely. This error used to be emitted by the Rust compiler, but it has since been discontinued.

Example of Rust Error E0090

Consider the following code snippet, which will generate the Rust Error E0090:

fn foo<'a: 'b, 'b: 'a>() {}

fn main() {
    foo::<'static>(); // error: wrong number of lifetime arguments:
                      //        expected 2, found 1

In this example, the function 'foo' has two lifetime arguments: 'a and 'b. However, while calling the function in the 'main' function, only one lifetime argument, 'static, is provided. This inconsistency in the number of lifetime arguments will lead to the error E0090.

How to Resolve Rust Error E0090

To fix this error, ensure that you provide an appropriate number of lifetime arguments that match the required input for the function. See the corrected example below:

fn foo<'a: 'b, 'b: 'a>() {}

fn main() {
    foo::<'static, 'static>();

Here, we have added the second lifetime argument 'static while calling the function 'foo', fixing the error. Now, the number of lifetime arguments provided during the function call matches the expected input.


In summary, Rust Error E0090 is caused by providing an incorrect number of lifetime arguments to a function call, which could lead to memory management issues. To prevent this error, always ensure that the correct number of lifetime arguments are supplied according to the function's signature. Although the compiler no longer emits this error, understanding the issue is crucial for writing idiomatic and safe Rust code.