E0308 - Error codes index
Description: Book listing all Rust error codes

# Error code E0308

Expected type did not match the received type.

Erroneous code examples:

    #![allow(unused)]
    fn main() {
    fn plus_one(x: i32) -> i32 {
        x + 1
    }

    plus_one("Not a number");
    //       ^^^^^^^^^^^^^^ expected `i32`, found `&str`

    if "Not a bool" {
    // ^^^^^^^^^^^^ expected `bool`, found `&str`
    }

    let x: f32 = "Not a float";
    //     ---   ^^^^^^^^^^^^^ expected `f32`, found `&str`
    //     |
    //     expected due to this
    }

This error occurs when an expression was used in a place where the compiler expected an expression of a different type. It can occur in several cases, the most common being when calling a function and passing an argument which has a different type than the matching type in the function declaration.